我在 Delphi 中编写了一个导出函数的 DLL。我想在不使用动态链接(LoadLibrary() API-Call)的情况下在 C++ 程序中使用这些函数。
“进口”声明将是
extern "C" int __stdcall getVersionNumber();
我主要使用创建 Windows 可执行文件的 Bloodshed Dev-C++。但我不知道如何告诉编译器它应该从“STATMONDLL32.dll”导入函数“getVersionNumber”。
在我通过谷歌搜索问题花费了很多小时后,没有任何结果(只有关于 .a 文件和 .lib 文件的奇怪内容,我没有通过 Delphi 编译......)我还安装了 VC++,但即使在那里,我找不到告诉编译器使用特定 DLL 的方法。
我已经为这个 DLL 创建了一个 DEF 文件 - 我如何告诉 Dev-C++ 和/或 VC++ 使用它?(首选 Dev-C++)
// 编辑:Delphi 正在创建 UNDECORATED 符号。该符号正是“getVersionNumber”。
我创建了以下带有装饰别名的 DEF 文件:
LIBRARY STATMONDLL32
EXPORTS
getVersionNumberA = _getVersionNumberA@0
我用 VC++ "lib.exe" 创建了一个 *.lib 文件:
lib.exe /DEF:StatMonDll32.def /OUT:StatMonDll32.lib
我已将 lib 包含在 VC++ 链接器设置中。
但是 VC++ 告诉我它无法解析外部符号 _getVersionNumberA@0 !请帮忙!
// 编辑:我在这里上传了 DLL:http: //www.viathinksoft.de/temp/StatMonDll32.dll。你能用 VC++ 访问符号 getVersionNumberA 吗?我从 6 天开始就在寻找解决方案:'-(
此致
丹尼尔·马歇尔