我正在尝试构建 boost 并生成 dll,但我所做的一切都没有解决问题。
这是我得到的:
创建库 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 和对象 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 : 错误 LNK2019: 无法解析的外部符号“__declspec(dllimport) public: __thiscall boost::gregorian::greg_month::greg_month(unsigned Short)” (_imp??0greg_month@gregorian@boost@@QAE@G@Z) 在函数“public: __thiscall boost::gregorian::date::date(enum boost::date_time::special_values)”中引用 (??0date@gregorian@升压@@QAE@W4special_values@date_time@2@@Z)
thread.obj :错误 LNK2019:无法解析的外部符号“__declspec(dllimport) public: __thiscall boost::gregorian::greg_month::operator unsigned Short(void)const ” (_imp??Bgreg_month@gregorian@boost@@QBEGXZ) 在函数 __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:致命错误 LNK1120:2 未解决外部因素
这里有一些有关设置的信息:
操作系统:W7 x64
构建命令:
b2 -j%NUMBER_OF_PROCESSORS% --abbreviate-paths 工具集=msvc-11.0 定义=_SECURE_SCL=0 定义=_CRT_SECURE_NO_DEPRECATE 定义=_CRT_SECURE_NO_WARNINGS --without-mpi 地址模型=32 变量=调试安装链接=共享运行时链接=共享线程=多异步异常=on异常处理=on extern-c-nothrot=off --prefix=..\boost
光盘 ..
我的计算机上安装了 CYGWin。
这是我到目前为止所尝试过的;
*我尝试在32位命令窗口中构建它(我使用jenkins来构建boost)
*我在boost config/user.hpp中写了#define BOOST_ALL_DYN_LINK
*我在boost config/user.hpp中写了#define BOOST_ALL_NO_LIB
以前有人遇到过这样的问题吗?我真的在任何地方都找不到任何东西吗?
EDIT:
关于我的问题有更新。我能够构建它以供发布。我唯一改变的是这里:
b2 -j%NUMBER_OF_PROCESSORS% --缩写路径工具集=msvc-11.0 定义=_SECURE_SCL=0 定义=_CRT_SECURE_NO_DEPRECATE 定义=_CRT_SECURE_NO_WARNINGS --without-mpi 地址模型=32变体=发布安装链接=共享运行时链接=共享线程=多异步异常=on异常处理=on extern-c-nothrow=off --prefix=..\boost
光盘 ..
可能是什么问题呢?我该如何解决?
预先感谢您的任何建议。
其实我已经找到了解决办法:
我使用 bjam 的方式是正确的,足以动态构建 boost。在那个阶段,我不应该定义任何东西。编译后,我更改了 user.hpp 和 #define BOOST_ALL_DYN_LINK。
这样我自己的项目(正在使用 boost)就会明白 boost 是动态的。这就是应该如何构建 boost 的方式。
这似乎是最好的方法,因为 boost 会按预期自动解码必要的库和 dll,并且运行良好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)