0

WinAPI 関数を呼び出そうとしていますDialogBox()Microsoftの Web サイトでは、この関数は user32.dll に指定されています。ただし、dll からインポートする関数として宣言してこの関数をインポートしようとすると、リンカはそこにないと言いました。次に、C:\Windows\System32\user32.dll で依存関係ウォーカーを使用して関数を見つけようとしましたが、関数はありませんでした。(ただし、他のすべての派手な関数リテラルを見ることができました。)その理由は何ですか?また、どうすれば問題を解決できますか?

Dプログラミング言語を使用しています。標準ライブラリの Windows モジュールは、WinAPI の関数の完全なセットをインポートしません。そのため、手動でインポートする必要がある場合があります。

4

1 に答える 1

5

それは正確です、そのような機能はありません。WinUser32.h SDKヘッダーファイルから:

#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
#define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)

つまり、Cプリプロセッサは関数の名前をDialogBoxParamに変更します。それはあなたがピンボークできる唯一のものです。マクロのようにゼロを渡すだけです。

于 2012-08-09T14:51:03.533 に答える