动态库中的MFC头afxwin.h生成链接错误

问题描述 投票:0回答:1

我正在尝试在动态库项目中使用 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 __

是否还需要添加任何其他内容到编译器标志中才能纠正此问题?

c++ visual-studio dll mfc
1个回答
0
投票

对于那些可能会发现这个问题相关的人。

我使用 CMake 作为项目文件生成器,并且我为我的构建启用了

WINDOWS_EXPORT_ALL_SYMBOLS
并以某种方式暴露了
__
符号。所以您可以查看该选项是否已为您启用。

希望这对将来的人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.