C ++ DLL没有导出我的函数

时间:2014-03-21 20:44:49

标签: c++ visual-studio-2010 dllexport

我已经搜索了谷歌和整个网站,看起来我正在做的事与我读过的内容相符。我正在使用VS 2010 C ++ Express。当我在DLL上调用dumpbin / exports时,我没有看到列出的任何函数。

以下是我的DLL代码中唯一的内容。我是否需要C ++中的任何特殊标题?

C ++头文件:

extern "C"
{
    __declspec(dllexport) int __cdecl AddOne(int start);
}

C ++ CPP文件:

extern int __cdecl AddOne(int start)
{
    return start + 1;
}

我错过了一些明显的东西吗?该函数是否必须在命名空间或静态类或任何东西?我现在只想尝试基础知识。

2 个答案:

答案 0 :(得分:6)

我没有看到代码中的错误。外部" C"和__cdecl并不重要。它们控制如何为链接器修饰入口点。他们不控制 if 它应该从您的DLL或可执行文件导出。顺便说一句.EXE可以像任何其他DLL一样导出入口点。 DLL可以像调用任何其他DLL一样调用驻留在.EXE中的函数。

关键元素是__declspec(dllexport)。这似乎是正确的。

检查您的标头是否真的包含在您的cpp文件中,并尝试在项目的属性页中使用各种选项的变体。

答案 1 :(得分:0)

如果您认为未导出,请尝试dependency walkerCFF Explorer查看生成的dll中的符号。在MSDN您可以找到有关如何导出的更多信息