来自PowerBuilder的DLL调用

本文关键字:调用 DLL PowerBuilder 来自 | 更新日期: 2023-09-27 17:56:02

我是一名开发人员学生,我现在正在写我的学士论文。几天后,我对从Powerbuilder Classic 12.5调用DLL的问题感到绝望。

是的,有关于它的讨论,但我真的尝试了很多,没有任何效果......我的同事也帮不了我。

我有一个用 c++ 编程的 DLL,我想调用它。头部功能是

__declspec(dllexport) bool __stdcall registerPbControl(unsigned long hctl);

在 PowerBuilder 中,我声明了一个全局外部函数:

FUNCTION boolean  registerControl (ulong hctl ) LIBRARY "C:'Users'...'GateWayFinal.dll"   ALIAS FOR "registerPbControl;ansi"

以及电源构建器中按钮的命令:

boolean lb
      lb = registerControl (handle (mle_1))

当我按下按钮时,我收到此错误:

PowerBuilder 应用程序执行错误: 应用程序已终止。错误:行中的运行时函数引用错误...

我做错了什么?

来自PowerBuilder的DLL调用

我不是C++专家,但我总是将函数声明为 WINAPI。我认为这与标准呼叫不同,但我现在不记得了。

只有在传递字符串时才需要 ;ansi 部分,并且该函数需要它 ansi 而不是 unicode。

不要在声明中使用完整的文件路径。

这可能是您作为别名错过的损坏名称。还将 dll 放在电源构建器项目所在的文件夹中,然后只需声明...图书馆"GateWayFinal.dll"...

您是否尝试过按照以下说明创建 c++ 项目:http://www.rgagnon.com/pbdetails/pb-0123.html(尤其是带有 Map 和损坏名称的部分)

听起来这可能是

名称混乱的问题。可以使用依赖关系查看器查看 DLL 中的实际名称。另请参阅此 SO 问题以获取更多信息:如何停止对 DLL 的导出函数进行名称重整?