DLL中未解决的符号错误

对于后台,我已经遇到了一个中型的linux代码库(编译成一个巨大的.so)到x64的窗口(编译成.dll)。 我有链接器的麻烦。

作为最小的testing用例,如果我从以下文件创build一个Visual Studio项目:

#include <Windows.h> #include <Dbghelp.h> void do_stuff(char const * s) { char buffer[4096]; long int len = UnDecorateSymbolName( s, buffer, sizeof(buffer), UNDNAME_COMPLETE); } 

我将项目types设置为DLL并构build它,我得到一个错误“LNK2001:无法parsing的外部符号__imp_UnDecorateSymbolName”。 也就是说,该文件编译正确,但无法链接到一个DLL。

我认为目标是我的dll链接到dbghelp.dll,特别是因为(至less在我的系统上)没有像dbghelp.lib这样的文件。 那么为什么现在试图解决这个符号,而不是当我的DLL被加载到应用程序? 为什么不能看到这个function呢?

要清楚,我已经确认我正在构buildx64 DLL,并且C:\ Windows \ System32中的dbghelp.dll是x64。

Solutions Collecting From Web of "DLL中未解决的符号错误"

连接到共享库,Windows中的DLL说话需要以下内容:

  1. 在编译时的头文件: Dbghelp.h
  2. 链接时导入库: Dbghelp.lib
  3. 运行时的DLL: Dbghelp.dll

你显然有1和3,缺少2。Visual Studio附带的Windows SDK包括导入库。 但是,您需要将其作为附加依赖项添加到项目的链接器选项中。

喜欢这个:

在这里输入图像说明