来自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 应用程序执行错误: 应用程序已终止。错误:行中的运行时函数引用错误...
我做错了什么?
我不是C++专家,但我总是将函数声明为 WINAPI。我认为这与标准呼叫不同,但我现在不记得了。
只有在传递字符串时才需要 ;ansi 部分,并且该函数需要它 ansi 而不是 unicode。
不要在声明中使用完整的文件路径。
这可能是您作为别名错过的损坏名称。还将 dll 放在电源构建器项目所在的文件夹中,然后只需声明...图书馆"GateWayFinal.dll"...
您是否尝试过按照以下说明创建 c++ 项目:http://www.rgagnon.com/pbdetails/pb-0123.html(尤其是带有 Map 和损坏名称的部分)
听起来这可能是
名称混乱的问题。可以使用依赖关系查看器查看 DLL 中的实际名称。另请参阅此 SO 问题以获取更多信息:如何停止对 DLL 的导出函数进行名称重整?