![](/img/trans.png)
[英]UnsatisfiedLinkError Wrapping C++ DLL with SWIG to allow Java developers to use it
[英]SWIG c++ Java DLL Windows
我的問題:為C ++ DLL創建Java包裝器。 我知道,有很多關於此問題的文章,但到目前為止我還沒有解決方案。 然后的問題:我在Windows 7、64位的C:\\ java \\ jdk上安裝了Java 1.6 up 29 32位。 此路徑是路徑變量的一部分(在任何地方打開cmdline,我都可以隨時調用javac ...)
我有最新的Swig,它成功為我的DLL創建了python和perl包裝器。
當我用VS2008來java / class示例時-它可以正確完成-並嘗試運行runme.java時出現錯誤:
UnsatisfiedLinkError
->本機代碼庫無法加載。 請參閱SWIG Java文檔中有關動態鏈接問題的章節以獲取幫助。
DLL非常簡單。 靜態鏈接到運行時庫(/ MT)。 沒有依賴關系,但仍然出現此錯誤。
請注意:swig示例不起作用。 已安裝Java。 同樣,tcl示例不起作用。 安裝了tcl 8.4(類似錯誤)。
任何幫助表示贊賞。 謝謝
您的類已成功編譯,本機庫已成功編譯。 問題是Java代碼需要在運行時加載使用Visual Studio生成的共享對象。
運行類時,嘗試傳遞-Djava.library.path=<directory containing your DLL>
。
從您所描述的外觀來看,您似乎沒有加載Java中編譯的DLL,然后才嘗試調用(由SWIG生成)一種JNI方法。
我通常使用類似:
%pragma(java) jniclasscode=%{
static {
try {
System.loadLibrary("module");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. \n" + e);
System.exit(1);
}
}
%}
在我的SWIG接口文件中,導致DLL在運行時由Java代碼自動加載。
(您需要確保將DLL放置在相對於系統上庫路徑而言適當的位置)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.