我正在尝试创建一个DLL并使用.def文件定义函数名称,但它似乎不起作用。我的头文件DLL是:
#ifdef ColorDLL_EXPORTS
#define ColorDLL_API
#endif
int ColorSelect(int i);
Cpp文件:
#include "stdafx.h"
#include "ColorDLL.h"
#using <ColorDiologeClass.dll>
int ColorSelect(int i){
ColorDiologeClass::Class1::ColorReturn(1);
return 1;
}
我通过右键单击解决方案资源管理器添加了一个ColorDLL.def并添加了一个.DEF文件,该文件如下所示:
LIBRARY "ColorDLL"
EXPORTS
ColorSelect
当我使用Dumpbin / Exports时,名称的结果是
name
ColorSelect = ?ColorSelect@@YAHH@Z (int __cdec1 ColorSelect(int))
我已经看到了名称将会是这样的
name
ColorSelect
如何摆脱=部分?
答案 0 :(得分:1)
如果您使用__declspec(dllexport)
,则会按照您看到的方式发出受损名称。您根本不需要.DEF文件。删除第一个并仅使用def文件获得不同的结果。
请注意,您已在#if。
的两个分支上导出