当前位置: 首页 > 面试题库 >

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

龙才俊
2023-03-14
问题内容

我正在尝试构建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,并且效果很好。



 类似资料:
  • 我也用同样的结果尝试了这个视频中的建议。 最后一件事,我已经没有想法了:在Chrome开发者控制台,我看到创建失败,错误为400,这表明我需要更新白名单URL。我通过添加以下URL实现了这一点: 这个问题一直让我抓狂。我想我什么都试过了。让我想知道我是否需要在Firebase中重新创建我的应用程序。

  • 静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:使用这种方式的程序并不在一开始就完成动态链接,而是直到真正调用动态库代码时,载入程序才计算(被调用的那部分)动态代码的逻辑地址,然后等到某个时候,程序又需要调用另外某块动态代码时,载入程序又去计算这部分代码的逻辑地址,所以,这

  • 在编译Linux程序时,我们经常会看到动态链接和静态链接这两个术语。这两个术语中是我Linux的共享函数库(shared libraries)相关的。共享函数库就象Windows系统里的.dll文件,它里面包含有很多程序常用的函数。为了方便程序开发和减少程序的冗余,程序当中就不用包含每个常用函数的拷贝,只是在需要时调用系统中共享函数库中常函数功能即可。这种方式我们称之为动态链接(Dynamical

  • 动态链接库(也称为DLL)是Microsoft Windows最重要的组成要素之一。大多数与Windows相关的磁盘文件如果不是程序模块,就是动态链接程序。迄今为止,我们都是在开发Windows应用程序;现在是尝试编写动态链接库的时候了。许多您已经学会的编写应用程序的规则同样适用于编写这些动态链接库模块,但也有一些重要的不同。 动态链接库的基本知识 正如前面所看到的,Windows应用程序是一个可

  • 问题内容: 我正在尝试使用Boost的Asio构建项目,但遇到了一些麻烦。最初,我试图在没有任何其他库的情况下构建项目,因为所有内容都应该放在头文件中。 我尝试构建的程序如下所示: 可以发现这里在加速的网站。 因此,最初我只有: 这导致以下错误: 看来我需要系统库。因此,我按照此处的入门指南中的说明进行操作,该指南为我提供了位于 / usr / include / boost_1_40_0 / s

  • 我在firebase控制台中创建了一个动态链接,这个动态链接指向Play Store中的一个应用程序(即我使用这个链接通过WhatsApp与其他用户共享这个应用程序)。另外,我通过getDynamicLink方法在我的应用程序中接收深度链接。 当我向动态链接追加查询参数()时,Play Store页面将出现,但我无法在link方法中接收深度链接,该链接为空。如何将查询参数追加到动态链接并在安装时重