3

我正在尝试创建一个代理 dll 并遇到了这个问题。假设我有以下文件:

一个.cpp:

extern "C" int __declspec(dllexport) func(int x) {return x;}

a.定义:

EXPORTS
func
??4Test@@QAEAAU0@ABU0@@Z = func

然后我运行:

cl /c c.cpp
link /RELEASE /DLL /DEF:c.def /OUT:c.dll c.obj

输出dumpbin /exports c.dll显示以下符号已导出: func ??4Test

“测试”导出名称的其余部分在哪里?有什么办法可以找回来吗?

4

2 回答 2

1

试一试,而不使用 DEF 文件:

extern "C" __declspec(dllexport) int __cdecl func(int x) {return x;}

现在它根本不应该破坏函数名称。

于 2012-11-27T17:31:25.177 回答
-1

我想到了一个想法:使用与“@”不同的占位符(例如“^”)导出符号,然后通过将 DLL 视为 PE 文件并在磁盘上重写导出表条目来重写导出表。

于 2013-11-20T20:51:17.533 回答