gpt4 book ai didi

c++ - 构建 Boost 动态可链接会导致链接错误?

转载 作者:IT老高 更新时间:2023-10-28 11:15:36 25 4
gpt4 key购买 nike

我正在尝试构建 boost 并生成 dll,但我所做的一切都没有解决问题。

这是我得到的:

Creating library bin.v2\libs\thread\build\msvc-11.0\dbg\adrs-mdl-32\async-excpt-on\thrd-mlt\boost_thread-vc110-mt-gd-1_53.lib and object bin.v2\libs\thread\build\msvc-11.0\dbg\adrs-mdl-32\async-excpt-on\thrd-mlt\boost_thread-vc110-mt-gd-1_53.exp thread.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall boost::gregorian::greg_month::greg_month(unsigned short)" (_imp??0greg_month@gregorian@boost@@QAE@G@Z) referenced in function "public: __thiscall boost::gregorian::date::date(enum boost::date_time::special_values)" (??0date@gregorian@boost@@QAE@W4special_values@date_time@2@@Z) thread.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall boost::gregorian::greg_month::operator unsigned short(void)const " (_imp??Bgreg_month@gregorian@boost@@QBEGXZ) referenced in function __catch$?make_external_thread_data@?A0x9b8c45f0@boost@@YAXXZ$0 bin.v2\libs\thread\build\msvc-11.0\dbg\adrs-mdl-32\async-excpt-on\thrd-mlt\boost_thread-vc110-mt-gd-1_53.dll : fatal error LNK1120: 2 unresolved externals

这里有一些关于设置的信息:

操作系统:W7 x64

构建命令:

b2 -j%NUMBER_OF_PROCESSORS% --abbreviate-paths toolset=msvc-11.0 define=_SECURE_SCL=0 define=_CRT_SECURE_NO_DEPRECATE define=_CRT_SECURE_NO_WARNINGS --without-mpi address-model=32 variant=debug install link=shared runtime-link=shared threading=multi asynch-exceptions=on exception-handling=on extern-c-nothrow=off --prefix=..\boost cd ..

我已经在电脑上安装了 CYGWin。

这是我到目前为止所尝试的;

*我尝试在 32 位命令窗口中构建它(我正在使用 jenkins 构建 boost)

*我在 boost config/user.hpp 中写了#define BOOST_ALL_DYN_LINK

*我在 boost config/user.hpp 中写了#define BOOST_ALL_NO_LIB

有没有人遇到过这样的问题?我真的在任何地方都找不到任何东西?


编辑:

有关于我的问题的更新。我能够构建它以供发布。我唯一改变的是这里:

b2 -j%NUMBER_OF_PROCESSORS% --abbreviate-paths toolset=msvc-11.0 define=_SECURE_SCL=0 define=_CRT_SECURE_NO_DEPRECATE define=_CRT_SECURE_NO_WARNINGS --without-mpi address-model=32 variant=release install link=shared runtime-link=shared threading=multi asynch-exceptions=on exception-handling=on extern-c-nothrow=off --prefix=..\boost光盘..

可能是什么问题?我该如何解决?

提前感谢您的任何建议。

最佳答案

其实我已经找到了解决办法:

我使用 bjam 的方式是正确的,足以动态构建 boost。在那个阶段,我不应该定义任何东西。编译后我更改了 user.hpp 和 #define BOOST_ALL_DYN_LINK。这样我自己的项目(正在使用 boost)将理解 boost 是动态的。这就是构建 boost 的方式。

这似乎是最好的方法,因为 boost 会按预期自动解码必要的库和 dll 并且运行良好。

关于c++ - 构建 Boost 动态可链接会导致链接错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com