MSVC:__ declspec(dllexport)不符号

时间:2011-09-23 09:51:49

标签: visual-c++ dll declspec

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

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

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

欢迎任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

3)确保预编程器指令不会从编译单元中排除函数。

还要查找其他符号,并尝试查看导出的符号与函数之间的差异。

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