簡體   English   中英

使用loadLibrary()在Java中調用C ++ dll

[英]calling a c++ dll in java with loadLibrary()

我在用Java加載c ++ dll時遇到問題。 當我使用下面的Java代碼(loadLibrary)時,出現此錯誤:

Exception in thread "main" java.lang.UnsatisfiedLinkError: TestJNI.Add(II)V

我怎么解決這個問題?

public class TestJNI {

   public native void Add(int a,int b);

   static {

      System.loadLibrary("dllclass");

   }

   public static void main(String args[]) {

          new TestJNI().Add(1,2);
       }
}

除頭文件外,我沒有c的源代碼,它使用此代碼

int APIENTRY(dllexport)add(int a,int b);

如果您對C有任何建議,或者對Java或示例代碼有任何更改,請進行介紹。

  1. objdump和readelf之類的工具將很有幫助。 (海灣合作委員會)
  2. 函數名稱的格式為“ _(JNIEnv *,jclass或jobject,[其余參數在這里]。)。”(jclass用於靜態方法,jobject用於非靜態方法)
  3. 您不能直接與Java中的純c / c ++庫進行通信,必須編寫一個通過隧道建立連接的接口/膠水庫。

提示: int APIENTRY(dllexport) add(int a, int b);
本機java方法? ,請參閱第2點

建議:我認為您對本機方法感到困惑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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