Visual Studio MFC头afxwin. h在动态库中生成链接错误

yh2wf1be  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(199)

我尝试在动态库项目中使用MFC头文件,例如#include <afxwin.h>
结构如下所示:

  1. Project Solution
  2. |
  3. |- DynamicLib
  4. |
  5. |- main.cc

main.cc包含header。
我打开了/MD编译器标志,但解决方案无法编译。
在生成的exports.def文件中,有一个__ DATA字段导致了这个问题。
当我手动删除它时,解决方案将编译。
以下是(无用的)链接器错误:

  1. 1>exports.def : warning LNK4022: cannot find unique match for symbol '__'
  2. 1>exports.def : warning LNK4002: __@@_PchSym_@00@UwvevolknvmgUlhhprmUxnzpvUlhhprmRyfrowUlhhprmOwriUwvyftUhgwzucOlyq@4B2008FD98C1DD4 defined in MyDir.dir\Debug\stdafx.obj
  3. 1>exports.def : warning LNK4002: __@@_PchSym_@00@UzABUPdlipUDUhUrmgvinvwrzgvUexgllohUzgohOmzgrevkilqPBACIAJCBDBUlyqiUznwGEUhgwzucOlyq@4B2008FD98C1DD4 defined in d:\a01\_work\3\s\Intermediate\vctools\atls.nativeproj_1028092131\objr\amd64\stdafx.obj
  4. 1>exports.def : error LNK2001: unresolved external symbol __

还有什么东西应该添加到编译器标志中以纠正这个问题吗?

2w3rbyxf

2w3rbyxf1#

可能会觉得这个问题有关联的人。
我使用CMake作为项目文件生成器,我为我的构建启用了WINDOWS_EXPORT_ALL_SYMBOLS,这以某种方式暴露了__符号。所以你可以看看这个选项是否为你启用。
希望这将有助于在未来的人。

相关问题