我編譯this library使用NDK到.so中。我可以用System.LoadLibary()成功加載它,但是當我嘗試庫的示例代碼時,它會拋出一個UnsatisfiedLinkError。我檢查了庫的源代碼,它確實具有我使用的函數以及相同的參數(JNIEnv和jobject除外)以及相同的返回值。另外,圖書館的創建者當然會分享工作示例代碼。那麼我做錯了什麼?我從頁面複製了確切的代碼,並相應地更改了變量名稱。使用本機庫時的UnsatisfiedLinkError
1
A
回答
0
沒有更多的細節,很難說。查看了該網站上的圖書館之後,可能會以不同的方式命名您的班級。您需要致電您的Java類Giffle
,它必須位於包org.jiggawatt.giffle
中。這不是一個命名約定,你會意外;-)
package org.jiggawatt.giffle;
public class Giffle {
static {
System.loadLibrary("gifflen");
}
public native int Init(String gifName, int w, int h,
int numColors, int quality,
int frameDelay);
public native void Close();
public native int AddFrame(int[] inArray);
}
要使用它,你要麼做在Giffle
類的叫聲,或可能是一個更清潔的方式是使用一個實例偶然發現:
Giffle giffle = new Giffle();
giffle.Init(...);
giffle.AddFrame(...);
giffle.Close();
似乎有點奇怪,Java部分不在zip中,尤其是因爲類名被硬編碼爲C符號。也許編寫它的人在Java部分有一大堆額外的代碼,他不希望任何人看到。
據我所知,C和C++代碼是完整的。你根本不需要修改它。本地方法的實現在gifflen.cpp中,並且有像Java_org_jiggawatt_giffle_Giffle_Init
這樣的名稱。它們具有用於JNI調用約定的正確的本機端參數。
0
你是如何構建這個的?我發現每次運行ndk-build
之後,我都必須在Eclipse中執行Project-> Clean ...以讓Eclipse獲取.so文件並將其複製到apk中。
0
相關問題
- 1. 使用本機庫時出現Android UnsatisfiedLinkError
- 2. 發現本機庫時發生Java UnsatisfiedLinkError
- 3. 使用JNI時UnsatisfiedLinkError?
- 4. 加載本地庫時出現UnsatisfiedLinkError
- 5. 的java opencv的unsatisfiedLinkError,機庫被加載
- 6. 調用與Android NDK的本機代碼構建時的UnsatisfiedLinkError
- 7. UnsatisfiedLinkError與本地庫下sbt
- 8. 本地庫未找到(UnsatisfiedLinkError)
- 9. 使用JNI時出現UnsatisfiedLinkError
- 10. 使用gwt時出現UnsatisfiedLinkError
- 11. 在Android 2.3.3上使用OpenCv的本機代碼時拋出UnsatisfiedLinkError 2.3.3
- 12. 在單獨的類中使用Java本機方法時出現UnsatisfiedLinkError
- 13. Tomcat中的本地庫UnsatisfiedLinkError + Windows + eclipse
- 14. Java本機庫System.loadLibrary失敗,出現UnsatisfiedLinkError錯誤
- 15. UnsatisfiedLinkError(未找到本機方法)
- 16. UnsatisfiedLinkError:未發現本機方法:android.net.LocalSocketImpl.connectLocal
- 17. 調用JProfiler時UnsatisfiedLinkError
- 18. UnsatisfiedLinkError同時移植Libgdx遊戲RoboVM com.badlogic.gdx.graphics.g2d.freetype.FreeType $ Face.getSize(本機方法)
- 19. JNI UnsatisfiedLinkError依賴庫
- 20. UnsatisfiedLinkError - 原生庫 - jnidispatch.dll
- 21. UnsatisfiedLinkError Java與Rxtx庫
- 22. Android NDK:使用OpenAL共享庫時出現UnsatisfiedLinkError
- 23. UnsatisfiedLinkError - 處理中的GSvideo庫
- 24. Maven - 使用java.library.path的UnsatisfiedLinkError
- 25. 如何使用本機庫
- 26. Android本機使用Qt庫
- 27. Unsatisfiedlinkerror本地方法
- 28. Android NDK UnsatisfiedLinkError調用駐留在Android庫項目中的本地函數時
- 29. UnsatisfiedLinkError在運行時
- 30. android NDK加載庫 - UnsatisfiedLinkError