我尝试在动态库项目中使用MFC头文件,例如#include <afxwin.h>
。
结构如下所示:
Project Solution
|
|- DynamicLib
|
|- main.cc
main.cc
包含header。
我打开了/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 __
还有什么东西应该添加到编译器标志中以纠正这个问题吗?
1条答案
按热度按时间2w3rbyxf1#
可能会觉得这个问题有关联的人。
我使用CMake作为项目文件生成器,我为我的构建启用了
WINDOWS_EXPORT_ALL_SYMBOLS
,这以某种方式暴露了__
符号。所以你可以看看这个选项是否为你启用。希望这将有助于在未来的人。