尽管链接正确,但不确定的提升参考
Undefined boost reference despite correct linking
我发现了很多类似的问题,但是我无法为我应用任何给定的解决方案。几个月前,我使用Boost库从事一个项目。我只是在命令行中编译,如Boost网站上所述。
g++ -I pathToBoost file.cpp -o file -lboost_system -lboost_filesystem
还完成了与BOOstrongYSTEM和BOOST_FILESYSTEM所需的两个链接。这效果很好,但是现在突然在我尝试再次编译时出现错误。
/usr/bin/ld: /tmp/ccM2BzEo.o: in function `boost::system::generic_category()':
file.cpp:(.text._ZN5boost6system16generic_categoryEv[_ZN5boost6system16generic_categoryEv]+0x7):
undefined reference to `boost::system::detail::generic_category_instance'
好吧,在我看来,链接boostrongystem库有一个错误。由于以前有同样的事情,因此编译器的问题可能吗?
我使用
Boost 1.68.0
g++ (GCC) 8.2.1
ManjaroLinux 18.0.3
我希望有人可以在这里帮助我,而且我不仅太愚蠢了,无法在另一个线程中看到解决方案。
问候!
链接命令行中库的顺序很重要。 boost_filesystem
取决于 boost_system
,因此修复:
-lboost_filesystem -lboost_system
另外,您可以用--start-group
和--end-group
包围库列表,以使链接器多次重新扫描库,直到其失败或解析所有符号,因此不需要在命令行中对库的特定排序。但是,链接可能需要更长的时间。例如:
g++ -I pathToBoost file.cpp -o file -Wl,--start-group -lboost_system -lboost_filesystem -Wl,--end-group
由于您指定了-I pathToBoost
,因此您还需要指定-L<path-to-boost-libs> -Wl,-rpath=<path-to-boost-libs>
。否则,它使用pathToBoost
BOOST的一个版本的标题,但链接您的系统Boost的错误库。
相关文章:
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 不确定如何装饰我的C++库代码以在 C 中使用
- C++功能泄漏内存,我是C++新手,不确定如何解决
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 为什么"fun(i)"被推导出为"fun<int&>"而不是"fun<int>",因为"i"是"int"的类型而不是参考?
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 为什么以下代码是不确定的?
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- 误用指针会产生分段错误。我仍然不确定如何纠正它
- 我不确定为什么代码没有运行,它在编译时抛出错误,说它无法找到 PrintArray()
- 不确定有关入门C++参考的描述
- 调用gluPerspective和gluLookAt给了我一个不确定的参考
- 当通过函数中的参考调用时,标识符不确定
- Eclipse CDT不确定的参考(通过mysys2下载的软件包)
- G 也抱怨不确定的参考文献,即使包括库
- 不确定如何修复;非静态成员参考必须相对于特定对象
- CLION不确定对功能的参考
- 尽管链接正确,但不确定的提升参考
- CXX11不确定的参考文献6.2.0
- 第一个C 库:我不确定在哪里参考并声明我的变量