1

在 MSVC(特别是 2010 版本)中编写 DLL 时,我遇到了一个小问题。我的程序由主要部分和一个 DLL 组成。DLL 包含一个函数

__declspec(dllexport) int test_function(void) {
    return 42;
}

该文件是使用 DLL 项目编译的(不使用预编译的头文件,我选择了一个空的 DLL 项目)。现在,当我想使用该dumpbin工具列出导出的符号时,导出test_function下没有列出。是否有强制__declspec(dllexport)实际导出符号的特定设置?

欢迎任何帮助。谢谢!

4

1 回答 1

1

那应该这样做。如果这是整个代码,请检查以下内容:

1)您实际上是在检查正确的 dll。看时间戳。仔细检查位置和名称。

2)您正在编译指定的 cpp(我认为您的定义在 cpp 文件中)。仅仅因为文件在目录中并不意味着它已被编译,请确保将其添加到项目中。

3) 确保您的函数未被预处理器指令从编译单元中排除。

还要寻找其他符号并尝试查看导出的符号与您的函数之间有什么区别。

如果失败,您应该移至__declspec(dllexport)您的.h文件并将定义(不带__declspec(dllexport))移至您的.cpp. 它可能不会被导出,因为编译器可能会尝试通过内联它来优化它。

于 2011-09-23T09:59:21.713 回答