将BOOST 1.35升级到1.43会导致链接器错误__pRawDllMain(与mfc相关)

Pet*_*mmo 7 mfc dynamic-linking boost-thread static-linking

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

error LNK2005: __pRawDllMain already defined in ApObs.obj
Run Code Online (Sandbox Code Playgroud)

如果我激活BOOST_LIB_DIAGNOSTIC旧构建列表:

linking to lib file: libboost_thread-vc71-mt-gd-1_35.lib
Run Code Online (Sandbox Code Playgroud)

linking to lib file: libboost_thread-vc71-mt-gd-1_43.lib
Run Code Online (Sandbox Code Playgroud)

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

完整的错误消息是:

libboost_thread-vc71-mt-gd-1_43.lib(tss_pe.obj) : error LNK2005: __pRawDllMain already defined in ApObs.obj
Run Code Online (Sandbox Code Playgroud)

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

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

Yoc*_*mer 1

这是由于链接顺序而发生的。您可以通过在附加依赖项
中手动添加库来更改链接错误。 就我而言,在其他冲突的库之前放置 libboost_thread-vc71-mt-gd-1_43.lib 解决了问题:

项目 -> 属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项

libboost_thread-vc80-mt-1_40.lib;mfcs80u.lib;%(附加依赖项)

请注意,就我而言,它与 mfcs80u.lib 冲突