我正在尝试构建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(枚举boost :: date_time :: special_values)“(?? 0date @ gregorian @ boost @@ QAE @ W4special_values @ date_time @ 2 @@@ Z)thread.obj:错误LNK2019:未解析的外部符号“ __declspec(dllimport)公共:__thiscall boost :: gregorian :: greg_month :: operator unsigned short(void)const”( _小鬼 在函数__catch $中引用的Bgreg_month @ gregorian @ boost @@ QBEGXZ)?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%-缩写路径工具集= 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异常处理= 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%-缩写路径工具集= msvc-11.0 define = _SECURE_SCL = 0 define = _CRT_SECURE_NO_DEPRECATE define = _CRT_SECURE_NO_WARNINGS –without-mpi address-model = 32variant = release install link =共享的运行时链接=共享线程= multi asynch-exceptions = on异常处理= on extern-c-nothrow = off –prefix = .. \ boost cd ..
可能是什么问题呢?我该如何解决?
预先感谢您的任何建议。
其实我已经找到了解决方案:
我使用bjam的方式是正确的,足以动态构建boost。在那个阶段,我不应该定义任何东西。编译后,我更改user.hpp并#define BOOST_ALL_DYN_LINK。这样,我自己的项目(正在使用boost)将了解boost是动态的。那就是应该如何建立增强的方式。
这似乎是最好的方法,因为boost可以按预期自动解码必要的库和dll,并且效果很好。