gpt4 book ai didi

mfc - BOOST 1.35 到 1.43 的升级导致 __pRawDllMain 的链接器错误(mfc 相关)

转载 作者:行者123 更新时间:2023-12-04 12:56:27 30 4
gpt4 key购买 nike

在工作中,我们有一个 MFC 扩展 DLL,它使用 1.35 构建得很好,但是使用 1.43 构建时会导致以下错误:

error LNK2005: __pRawDllMain already defined in ApObs.obj

如果我激活 BOOST_LIB_DIAGNOSTIC 旧的构建列表:
linking to lib file: libboost_thread-vc71-mt-gd-1_35.lib


linking to lib file: libboost_thread-vc71-mt-gd-1_43.lib

所以没有改变与哪个库链接

完整的错误信息是:
libboost_thread-vc71-mt-gd-1_43.lib(tss_pe.obj) : error LNK2005: __pRawDllMain already defined in ApObs.obj

我在两个库版本中对 tss_pe.cpp 做了一个差异,它们是相同的,所以我不确定问题是什么。

您可以通过定义 BOOST_THREAD_USE_DLL 使消息消失。但是我们需要发送 BOOST_THREAD-VC71-MT-GD-1_43.DLL 所以我认为这不是最好的解决方案。

最佳答案

MFC 和静态链接的 boost 线程之间存在已知的不兼容,两者都试图 Hook DllMain 以初始化内容。这已在 boost 1.37 中引入。

From the author of boost::thread:

If you can ensure that on_process_exit from boost/thread/detail/tss_hooks.hpp is called when the DLL is unloaded then you can patch libs/thread/src/win32/tss_pe.cpp to remove the use of _pRawDllMain.



(不过,他建议使用 DLL 版本。)

好像有 efforts使此修补程序变得不必要,但到目前为止显然无济于事......

关于mfc - BOOST 1.35 到 1.43 的升级导致 __pRawDllMain 的链接器错误(mfc 相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3466944/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com