当前位置: 首页 > news >正文

高端建网站多少钱搭建网站工具

高端建网站多少钱,搭建网站工具,柳江网站虚拟主机公司,wordpress表单支付插件下载1 问题背景说明 在自己的项目源码中引用libeasysqlite.so时编译成功,但运行时遇到问题直接报错,找不到符号 symbol:_ZN3sql5FieldC1ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10field_typeEi。 2 问题描述和解…

1 问题背景说明

在自己的项目源码中引用libeasysqlite.so时编译成功,但运行时遇到问题直接报错,找不到符号 symbol:_ZN3sql5FieldC1ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10field_typeEi。

2 问题描述和解读

使用c++filt查看符号表中未知的这个符号

$c++filt _ZN3sql5FieldC1ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10field_typeEisql::Field::Field(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, sql::field_type, int)

查询到该符号对应的真实函数为:

sql::Field::Field(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, sql::field_type, int)

接下来在使用nm命令查询libeasysqlite.so,看是否有该符号对应的函数。使用nm命令查看,如下所示:

.../data/sqlite/build$ nm -gC libeasysqlite.so  |grep sql::Field::Field
000000000002fca0 T sql::Field::Field(sql::field_use)
000000000002fd80 T sql::Field::Field(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, sql::field_type, int)
0000000000038394 W sql::Field::Field(sql::Field&&)
00000000000320c4 W sql::Field::Field(sql::Field const&)
000000000002fca0 T sql::Field::Field(sql::field_use)
000000000002fd80 T sql::Field::Field(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, sql::field_type, int)
0000000000038394 W sql::Field::Field(sql::Field&&)
00000000000320c4 W sql::Field::Field(sql::Field const&)

这里发现并没有我们需要的sql::Field::Field(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, sql::field_type, int)方法,而是有一个类似的sql::Field::Field(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, sql::field_type, int)方法,这就说明有可能是编译时使用的链接库不同而导致的问题。

这里是cxx11空间,对应的是 C++11版本的链接库,而我们需要的是__1空间的库,也就是C++03版本的链接库。那么如何修改呢?就是在CMakeList.txt文件中添加一些参数,如下所示:

set(CMAKE_CXX_COMPILER clang++-14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")

重新编译libeasysqlite.so库。这样在编译生成库的时候就会强制使用C++03版本的标准了,再次make编译出sql库即可。

接下来开始测试该库。修改后执行nm命令查看,如下所示:

.../data/sqlite/build$ nm -gC libeasysqlite.so  |grep sql::Field::Field
00000000000244b0 T sql::Field::Field(sql::field_use)
0000000000024590 T sql::Field::Field(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, sql::field_type, int)
00000000000244b0 T sql::Field::Field(sql::field_use)
0000000000024590 T sql::Field::Field(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, sql::field_type, int)
0000000000029e54 W sql::Field::Field(sql::Field&&)
000000000002734c W sql::Field::Field(sql::Field const&)

这样就和我们需要的对上了。

3 问题总结

该类问题的解决步骤如下所示:

  1. 遇到这类问题时基本上都是使用c++filt来将符号表中的符号转换。
  2. 确认符号是否在库中,如果不在库中那么可能是链接库的版本或者编译方式不对。
  3. 修正编译方式/库的版本,确认符号表中的符号可以对上。接下来进行实测即可。

http://www.mmbaike.com/news/73332.html

相关文章:

  • 北京的网站建设公司有哪些简述seo的基本步骤
  • 海南政府网站建设品牌服务推广
  • 门户网站注意事项百度搜索引擎营销案例
  • 上海网站建设网页制建立一个网站需要多少钱?
  • 茂名模板建站哪家好在线培训平台哪家好
  • mmd怎么做下载网站免费seo排名优化
  • 虚拟主机加wordpress搜索引擎优化到底是优化什么
  • 百度做网站的做网站需要什么条件
  • 网站首页轮播图怎么做云seo关键词排名优化软件
  • 保定网站建设多少钱百度关键词优化排名
  • 唐山做网站的电话信阳搜索引擎优化
  • 徐州cms建站今日疫情最新消息全国31个省
  • wordpress淘客系统seo是什么姓
  • 做网站需要找什么客户百度一下网页搜索
  • seo做网站赚钱微信搜一搜排名优化
  • 微网站什么意思企业营销模式
  • 如果做车站车次查询的网站需要什么消息信息小广告网页
  • 网站关键词排名全掉了网络营销工程师培训
  • 两学一做党员夜校播放网站百度怎么找人工客服
  • 官方网站投诉平台中国足彩网竞彩推荐
  • 做网站番禺搜索推广渠道有哪些
  • 家居网站建设的需求分析打广告
  • ftp服务器搭建设置网站信息广州最新疫情通报
  • 沧州市高速公路建设管理局网站什么推广平台比较好
  • 行业网站设计搜索引擎优化方案案例
  • 有没有做定制衣服的网站内容营销是什么意思
  • h5高端网站建设wordpress官网入口
  • 站长查询站长工具外国网站的浏览器
  • 手机游戏开发用什么语言湖北seo
  • 中牟建设局网站如何制作百度网页