visual studio 2010 - c++ DLL不导出我的功能

visual studio 2010 - C++ DLL not exporting my function

本文关键字:我的 功能 DLL studio 2010 c++ visual      更新时间:2023-10-16

我已经搜索了谷歌和整个这个网站,似乎我正在做的事情与我读过的东西相匹配。我使用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;
}

我错过了什么明显的吗?函数是否必须在名称空间或静态类或其他地方?

我在你的代码中没有看到错误。Extern "C"和__cdecl并不重要。它们控制如何为链接器装饰入口点。他们不控制,如果应该导出出您的DLL或可执行文件或不。顺便说一下。exe可以像其他DLL一样导出入口点。DLL可以像调用其他DLL一样调用. exe中的函数。

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

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

如果您认为它没有导出,请尝试dependency walker和CFF Explorer来查看生成的dll中的符号。在MSDN你可以找到更多关于如何导出

的信息