【发布时间】:2016-11-03 10:51:25
【问题描述】:
我正在尝试根据现有 DLL 的结果重新创建 dll 的导出函数。原因是这个 DLL 被读入一个非常旧的软件,并且缺乏关于如何创建 DLL 的文档。
文档声明函数头应该是:
DLLEXPORT long WINAPI User_Write(char *Command, char *Parameter)
但我找不到任何方法来使用该确切行并复制输出,因此我创建了一个具有以下函数头的 DLL:
extern "C" __declspec(dllexport) long __cdecl User_Write(char *Command, char *Parameter)
当我使用 DUMPBIN /exports 导出此 DLL 时,我得到以下信息:
类似但不一样,软件不接受DLL。我真的需要一些帮助!
【问题讨论】:
-
“不接受 DLL”不是正确的问题描述。最明显的错误是调用约定之间的不匹配(您编写了 cdecl 但声明需要 stdcall)。并且根本没有装饰导出的函数。您从未提到使用 DEF 文件(需要移除装饰),因此您可能构建了一个 x64 DLL,而该程序需要一个 x86 DLL。
-
该软件实现了加载用户构建的DLL的功能,它应该像上面那样导出3个简单的功能。原始 DLL 不与任何 DEF 文件配对,它只有一个 DLL 文件,我构建的 DLL 也是如此。我构建的 DLL 是用 Microsoft Visual C++ V6.0 制作的,因为我得到的输入可能是它可能用于创建原始 DLL。