一尘不染

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

jenkins

我正在尝试构建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
..

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

预先感谢您的任何建议。


阅读 219

收藏
2020-07-25

共1个答案

一尘不染

其实我已经找到了解决方案:

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

这似乎是最好的方法,因为boost可以按预期自动解码必要的库和dll,并且效果很好。

2020-07-25