使用.DEF创建DLL以定义函数名称

时间:2013-06-03 15:37:40

标签: c++ cmd

我正在尝试创建一个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

如何摆脱=部分?

1 个答案:

答案 0 :(得分:1)

如果您使用__declspec(dllexport),则会按照您看到的方式发出受损名称。您根本不需要.DEF文件。删除第一个并仅使用def文件获得不同的结果。

请注意,您已在#if。

的两个分支上导出