我正在尝试构建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和object bin.v2 \库\螺纹\构建\ MSVC-11.0 \ DBG \的ADR-MDL-32 \异步-excpt上\ THRD-MLT \ boost_thread-vc110-MT-GD-1_53.exp thread.obj:错误LNK2019:解析外部符号 “__declspec(dllimport的)公共:__thiscall升压::阳历:: greg_month :: greg_month(无符号短)”(_ 小鬼 ?? 0greg_month @公历@升压@@ QAE @ G @ Z)在函数“public:__thiscall boost :: gregorian :: date :: date(enum boost :: date_time :: special_values)”中引用“(?? 0date @ gregorian @ boost @@ QAE @ W4special_values @ DATE_TIME @ @@ 2 Z) thread.obj:错误LNK2019:解析外部符号 “__declspec(dllimport的)公共:__thiscall升压::阳历:: greg_month ::运算符无符号短(无效)常量”(_ 小鬼 ?? Bgreg_month @公历@ 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路径工具集= MSVC-11.0定义= _SECURE_SCL = 0定义= _CRT_SECURE_NO_DEPRECATE限定= _CRT_SECURE_NO_WARNINGS --without-MPI地址模型= 32变体=调试安装链接=共享运行时链接= 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路径工具集= MSVC-11.0定义= _SECURE_SCL = 0定义= _CRT_SECURE_NO_DEPRECATE限定= _CRT_SECURE_NO_WARNINGS --without-MPI地址模型= 32的变体=释放 install link = shared runtime-link = shared threading = multi asynch-exceptions = on exception-handling = on extern-c-nothrow = off --prefix = .. \ boost cd ..
可能是什么问题?我该如何解决?
提前感谢任何建议。
答案 0 :(得分:2)
实际上我找到了解决方案:
我使用bjam的方式是正确的,足以动态构建增强。在那个阶段,我不应该定义任何东西。编译后,我更改了user.hpp和#define BOOST_ALL_DYN_LINK。 这样我自己的项目(使用boost)将理解提升是动态的。这就是应该如何建立助推器的方式。
这似乎是最好的方法,因为boost会按预期自动解码必要的lib和dll并且运行良好。
答案 1 :(得分:1)
我发现有很多手动步骤可以实现成功的增强版本。如果您不想通过这些手动步骤并避免开销,请尝试BlueGo,前提是您要使用MSVC工具集。 BlueGo允许配置32/64位,调试/释放模式等。
答案 2 :(得分:0)
我再次遇到了这个问题。我以前使用的是Boost 1.54。现在-提高1.71。
我认为,真正的原因是boost::thread
依赖项列表缺少boost::date_time
。对于我的两个版本都有效的是,在requirements
的{{1}}规则的底部添加了以下几行:
libs/thread/build/Jamfile.v2
让我们看看我在Github上创建了一个issue。