多数の依存 DLL を持つ DLL からいくつかの API を呼び出したいと考えています。すべての DLL をセットアップ パッケージに追加し、プロトタイプを定義しました。
function myapi_Init(): Integer;
external 'myapi_init@A.dll stdcall setuponly loadwithalteredsearchpath delayload';
ExtractTemporaryFiles('*.dll')
just fine inを使用してすべての DLL を抽出しInitializeSetup()
、それぞれの API を呼び出そうとします。ランタイム エラーが発生し、dll をインポートできません...
プロトタイプを次のように再定義し、DLL を抽出するための呼び出しを削除しました。
function myapi_Init(): Integer;
external 'myapi_init@files:A.dll,B.dll,C.dll,D.dll,E.dll stdcall setuponly loadwithalteredsearchpath delayload';
これはうまくいきます。確認したところ、どちらの場合も、適切な DLL がすべて抽出され、同じ場所にありました。各 API のすべての DLL 名のスペルアウトを避けるため、最初のケースを好みます。失敗を引き起こす最初のケースで何が間違っていますか?