私は NSIS インストーラーの初心者です。NSIS の展開は素晴らしいと言わざるを得ません。しかし、最近私は問題に遭遇しました。
私は NSIS スクリプトを使用して、Visual C++ を使用してコンパイルし、いくつかの C 関数をエクスポートする A.dll を呼び出します。A.dll は B.dll をインポートします。そのため、インストールの最初にそれら (A.dll と B.dll) を $PLUGINSDIR に抽出します。
その後、System::call を呼び出して、A.dll の "test()" を呼び出します。しかし、それは常に「エラー」を返します。また、B.dll のインポートを削除するテストを行ったところ、"test()" が機能し、期待どおりの値が返されました。
コードは次のとおりです。
;extract dll file
InitPluginsDir
SetOutPath $PLUGINSDIR
File "A.dll"
File "B.dll"
…………
;call it
code:
System::Call "$PLUGINSDIR\A::test() i.r0"
$0 は「エラー」を返します
B.dll のインポートを削除し、A.dll を再コンパイルした後。test() は正常に動作します。
NSISシステムプラグインを使用して別のdllをインポートするdllを呼び出すにはどうすればよいですか? 前もって感謝します。下手な英語でごめんなさい。皆さんが私の言いたいことを理解してくれることを願っています。