0

我正在尝试创建一个 DLL 并使用 .def 文件定义函数名称,但它似乎不起作用。我的 DLL 头文件是:

 #ifdef ColorDLL_EXPORTS
 #define ColorDLL_API
 #endif

 int ColorSelect(int i);

cp文件:

#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

如何摆脱 = 部分?

4

1 回答 1

1

如果您使用__declspec(dllexport),则会像您所看到的那样发出损坏的名称。您根本不需要 .DEF 文件。删除第一个并仅使用 def 文件来获得不同的结果。

请注意,您在#if 的两个分支上都有导出。

于 2013-06-03T16:00:23.213 回答