1

jar.exe ツールで抽出した JCudaDriver の dll をロードしようとしています。

System.loadLibrary("JCudaDriver-0.9.2-windows-x86_64")

そのドライバーは間違いなく私の java.libary.path にあります。手動で削除すると、代わりに not-found type エラーが発生するためです。今、私は次のエラーを受け取ります。

スレッド「メイン」の例外 java.lang.UnsatisfiedLinkError: myPath.JCudaDriver-0.9.2-windows-x86_64.dll.dll: 指定されたプロシージャが見つかりませんでした

私の理解では、この指定された手順は、別の dll への依存関係が欠落しているか、バージョンの衝突があるということです。dumpbin /dependents xx.dll依存するdllを見つけるために、コマンドラインでWindowsユーティリティ機能を使用しました。それらは次のとおりです。

Dump of file JCudaDriver-0.9.2-windows-x86_64.dll
Image has the following dependencies:
nvcuda.dll
ADVAPI32.dll
KERNEL32.dll

エラーなしで nvcuda.dll をロードできますが、後者の 2 つは問題です。

fun main(args: Array<String>) {
   //System.loadLibrary("nvcuda")
   System.loadLibrary("ADVAPI32")
   //System.loadLibrary("KERNEL32")
 }

これは、ADVAPI32.dll をロードしようとしたときのエラーです。

スレッド「メイン」の例外 java.lang.UnsatisfiedLinkError: C:\aaa_eric\code\lib\dlls_x64\advapi32.dll: %1 は有効な Win32 アプリケーションではありません

4

1 に答える 1