簡體   English   中英

SWIG c ++ Java DLL Windows

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM