2016-07-07 9 views
2

私は開発者 - 学生で、私は現在私の学士論文を書いています。 PowerBuilder Classic 12.5からDLLを呼び出すことについては、数日から絶望的です。DLL-Call from PowerBuilder

はい、それについての議論がありますが、私は実際にたくさん試しましたが、何も動作しません...そして私の同僚も私を助けてくれませんでした。

私は、呼び出したいC++でプログラミングされたDLLを持っています。頭関数は、PowerBuilderで

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

ですが、私はグローバル外部関数を宣言:

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

とPowerBuilderでのボタンのコマンド:

boolean lb 
     lb = registerControl (handle (mle_1)) 

私はボタンを押すと、このエラーが発生する:

PowerBuilder application execution error: Application Terminated. Error: Bad runtime Function reference at line ...

どうしたのですか?

+0

PowerBuilderでの作業は行われませんでした。しかし、それは[呼び出し規約](https://msdn.microsoft.com/en-us/library/k2b2ssfy.aspx)の不一致である可能性がありますか? – CristiFati

答えて

2

私はC++エキスパートではありませんが、私は常にWINAPIとして関数を宣言しています。私はそれがstdcallとは違うと思うが、私は現時点で覚えていない。

; ansi部分は、文字列を渡すときにのみ必要であり、関数はUnicodeの代わりにansiを必要とします。

宣言で完全なファイルパスを使用しないでください。

+0

これです。 WINAPIを使用する必要があります。 –

1

エイリアスとして間違っていると思われる名前が表示されている可能性があります。 は、ここで説明したよう

はあなたがC++プロジェクトを作成しようとしたことがあり... ... LIBRARY「GateWayFinal.dll」もPowerBuilderのプロジェクトがあるフォルダにDLLを配置し、ちょうど状態:http://www.rgagnon.com/pbdetails/pb-0123.html(特に一部と地図と難解な名前)