我正在尝试在动态库项目中使用 MFC 标头,例如
#include <afxwin.h>
。
结构如下:
Project Solution
|
|- DynamicLib
|
|- main.cc
main.cc
包含标题。
我打开了
/MD
编译器标志,但解决方案无法编译。
在生成的
exports.def
文件中,有一个 __ DATA
字段导致了问题。
当我手动删除它时,解决方案可以编译。
这是(无用的)链接器错误:
1>exports.def : warning LNK4022: cannot find unique match for symbol '__'
1>exports.def : warning LNK4002: __@@_PchSym_@00@UwvevolknvmgUlhhprmUxnzpvUlhhprmRyfrowUlhhprmOwriUwvyftUhgwzucOlyq@4B2008FD98C1DD4 defined in MyDir.dir\Debug\stdafx.obj
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
1>exports.def : error LNK2001: unresolved external symbol __
是否还需要添加任何其他内容到编译器标志中才能纠正此问题?
对于那些可能会发现这个问题相关的人。
我使用 CMake 作为项目文件生成器,并且我为我的构建启用了
WINDOWS_EXPORT_ALL_SYMBOLS
并以某种方式暴露了 __
符号。所以您可以查看该选项是否已为您启用。
希望这对将来的人有帮助。