'ld:找不到用于建筑的符号???' 即使在那里

贡萨洛·拉拉尔德(Gonzalo larralde)

我遇到这个奇怪的问题,试图在C ++中添加对boost模块的引用。首先,您需要知道我在玩C ++,所以也许这是我错过的超级新手。

这是我的环境,因此您可以获得更多上下文:Mac OS Mavericks,其MacPorts端口具有boost 1.55和g ++-mp-4.8。我目前正在链接和使用boost_system-mtboost_filesystem-mt

事情是我在一个正在进行的项目中工作,并且一直在使用boost和编译良好。我试图将utf8字符串转换Latin1,所以我包括boost/locale.hpp,并将其添加-lboost_locale-mt到链接器参数中。对于我正在执行的任务:

boost::locale::conv::from_utf<char>(value, "Latin1")

到目前为止,它编译良好,但是当完成链接时,出现以下错误:

Undefined symbols for architecture x86_64:
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> > boost::locale::conv::from_utf<char>(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::locale::conv::method_type)", referenced from:
      clsByteQueue::WriteUnicodeStringFixed(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in clsByteQueue.o
      clsByteQueue::WriteUnicodeString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in clsByteQueue.o
ld: symbol(s) not found for architecture x86_64

链接器正在使用以下命令运行:

g++-mp-4.8 -fstack-protector -ggdb -o "bin/foobar" <all compiled.o files goes here> -L/opt/local/lib/ -levent -levent_core -levent_extra -lboost_system-mt -lboost_filesystem-mt -lboost_locale-mt

事情是,我检查了它/opt/local/lib/libboost_locale-mt.a是否存在,而且也针对正确的体系结构进行了编译:

$ lipo -info /opt/local/lib/libboost_locale-mt.a
input file /opt/local/lib/libboost_locale-mt.a is not a fat file
Non-fat file: /opt/local/lib/libboost_locale-mt.a is architecture: x86_64

另外,我在文件中搜索from_utf,并出现以下符号:

$ otool -tv /opt/local/lib/libboost_locale-mt.a | grep from_utf
__ZN5boost6locale4conv8from_utfIcEENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEPKT_SC_RKS9_NS1_11method_typeE:

使用解开它之后,c++filt我可以验证链接器没有找到相同的符号(除非__1意味着什么?):

$ c++filt __ZN5boost6locale4conv8from_utfIcEENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEPKT_SC_RKS9_NS1_11method_typeE
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > boost::locale::conv::from_utf<char>(char const*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::locale::conv::method_type)

所以,到目前为止,我几乎一无所知。

你们可以帮助我找出问题所在,或者至少我可以尝试其他问题吗?

提前致谢。

TC

看起来您boost::locale是使用clang和libc ++(这是Mac OS X上的默认编译器和标准库)编译的,而您的程序是使用g ++和libstdc ++(这是g ++的标准库)编译的。这两个标准库不是二进制兼容的。

您需要使用clang和libc ++编译所有内容,或者获取使用g ++和libstdc ++编译的boost版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery找不到某些元素,即使它们在那里

来自分类Dev

为什么libnettle 2.7.1的.configure找不到-lgmp,即使它在那里?

来自分类Dev

Inno 安装程序抛出错误“找不到匹配的文件”即使是艰难的文件也在那里

来自分类Dev

找不到类型或名称空间,但在那里

来自分类Dev

Discord PHP OAUTH - 在那里找不到类

来自分类Dev

cli 找不到就在那里的文件夹

来自分类Dev

Android NDK链接V8静态库:找不到符号,但它们在那里

来自分类Dev

PWA:清单在那里,但是Chrome说“找不到清单”吗?

来自分类Dev

“找不到具有ID的列”,但该列在那里

来自分类Dev

Django找不到我的基本模板,但是它在那里

来自分类Dev

在配置文件中找不到连接字符串。但它在那里

来自分类Dev

尝试Link_to_Asset(Laravel)找不到文件(但它在那里)

来自分类Dev

找不到路径C#asp.net的一部分,路径在那里

来自分类Dev

当地的apt-mirror说找不到发布,但是在那里,我想念的是什么

来自分类Dev

即使UINavigation栏在那里,UIViewController的内容也不会显示

来自分类Dev

MSVCR100.dll丢失错误,即使在那里

来自分类Dev

cmake和Qt5:qmake将QT_INSTALL_LIBS报告为XXX,但在那里找不到QtCore

来自分类Dev

丢失的 ”;” 在标识符“名称”之前,即使它在那里

来自分类Dev

失踪 ”;” 在标识符“名称”之前,即使它在那里

来自分类Dev

猫鼬 findOne 不提供文档,即使它在那里

来自分类Dev

Aapt失踪,但在那里

来自分类Dev

我收到FileNotFoundException但文件在那里

来自分类Dev

jQuery:缩小以居中并留在那里

来自分类Dev

杀死#### 但进程还在那里?

来自分类Dev

为什么vim有时显示^ M而有时不显示(即使它们在那里)?

来自分类Dev

即使在两周后仍无法在Google Play商店中找到应用,但是它在那里

来自分类Dev

ElasticSearch-多次匹配查询,即使数据在那里也没有返回命中值-NodeJS

来自分类Dev

为什么vim有时显示^ M,有时却不显示(即使它们在那里)?

来自分类Dev

document.getElementById为null和/或不起作用,即使它在那里并且在加载之后也是如此

Related 相关文章

  1. 1

    jQuery找不到某些元素,即使它们在那里

  2. 2

    为什么libnettle 2.7.1的.configure找不到-lgmp,即使它在那里?

  3. 3

    Inno 安装程序抛出错误“找不到匹配的文件”即使是艰难的文件也在那里

  4. 4

    找不到类型或名称空间,但在那里

  5. 5

    Discord PHP OAUTH - 在那里找不到类

  6. 6

    cli 找不到就在那里的文件夹

  7. 7

    Android NDK链接V8静态库:找不到符号,但它们在那里

  8. 8

    PWA:清单在那里,但是Chrome说“找不到清单”吗?

  9. 9

    “找不到具有ID的列”,但该列在那里

  10. 10

    Django找不到我的基本模板,但是它在那里

  11. 11

    在配置文件中找不到连接字符串。但它在那里

  12. 12

    尝试Link_to_Asset(Laravel)找不到文件(但它在那里)

  13. 13

    找不到路径C#asp.net的一部分,路径在那里

  14. 14

    当地的apt-mirror说找不到发布,但是在那里,我想念的是什么

  15. 15

    即使UINavigation栏在那里,UIViewController的内容也不会显示

  16. 16

    MSVCR100.dll丢失错误,即使在那里

  17. 17

    cmake和Qt5:qmake将QT_INSTALL_LIBS报告为XXX,但在那里找不到QtCore

  18. 18

    丢失的 ”;” 在标识符“名称”之前,即使它在那里

  19. 19

    失踪 ”;” 在标识符“名称”之前,即使它在那里

  20. 20

    猫鼬 findOne 不提供文档,即使它在那里

  21. 21

    Aapt失踪,但在那里

  22. 22

    我收到FileNotFoundException但文件在那里

  23. 23

    jQuery:缩小以居中并留在那里

  24. 24

    杀死#### 但进程还在那里?

  25. 25

    为什么vim有时显示^ M而有时不显示(即使它们在那里)?

  26. 26

    即使在两周后仍无法在Google Play商店中找到应用,但是它在那里

  27. 27

    ElasticSearch-多次匹配查询,即使数据在那里也没有返回命中值-NodeJS

  28. 28

    为什么vim有时显示^ M,有时却不显示(即使它们在那里)?

  29. 29

    document.getElementById为null和/或不起作用,即使它在那里并且在加载之后也是如此

热门标签

归档