回答
比方說,我有庫foo
和庫bar
。 bar
對foo
有依賴性;它也有baz
的依賴,這是我們都不測繪與JNA:
public class Foo {
public static final boolean LOADED;
static {
Native.register("foo");
LOADED = true;
}
public static native void call_foo();
}
public class Bar {
static {
// Reference "Foo" so that it is loaded first
if (Foo.LOADED) {
System.loadLibrary("baz");
// Or System.load("/path/to/libbaz.so")
Native.register("bar");
}
}
public static native void call_bar();
}
到System.load/loadLibrary
電話會議將只需要如果baz
既不是你的庫裝載路徑(PATH
/LD_LIBRARY_PATH
,窗戶上的/ linux),也不在bar
的同一目錄(僅限於Windows)。
編輯
您還可以通過接口映射做到這一點:
public interface Foo extends Library {
Foo INSTANCE = (Foo)Native.loadLibrary("foo");
}
public interface Bar extends Library {
// Reference Foo prior to instantiating Bar, just be sure
// to reference the Foo class prior to creating the Bar instance
Foo FOO = Foo.INSTANCE;
Bar INSTANCE = (Bar)Native.loadLibrary("bar");
}
非常感謝!它比我想象的要容易。 – wurmi
所以這個假設Bar依賴於Foo?如果它們都相互依賴,是否有加載它們的方法? – Chris
找出如何首先使用系統調用來完成它,然後在JNA中執行這些調用。 – technomage
- 1. jna加載庫
- 2. 未找到JNA運行時依賴庫
- 3. 通過JNI和DllMain加載多個依賴庫
- 4. JNA加載.a/.lib庫
- 5. JNA使用相同的方法名加載很多庫
- 6. JNA加載同一個庫的多個副本
- 7. 依賴關係:庫未加載錯誤
- 8. Android的JNI未能加載依賴庫
- 9. 在Android上依賴加載共享庫
- 10. 在反應中加載jquery依賴庫
- 11. 使用requireJS加載IE依賴項
- 12. 使用Maven的Netbeans - 添加依賴庫
- 13. Java Web Start - 使用另一個本地依賴項加載本地依賴項
- 14. 加載DLL - JNA
- 15. Weblogic共享庫多個依賴版本
- 16. 加載DLL及其依賴
- 17. 當依賴類beeing加載
- 18. Spinejs依賴加載順序
- 19. 無法在JNA中加載庫NLPIR.dll
- 20. 加載罐子附帶的JNA庫
- 21. 在java中使用jna加載delphi dll
- 22. 在OSGi包中加載DLL(使用JNA)
- 23. 分別加載Angular 2及其依賴庫與多個webpack配置
- 24. 多個Maven插件依賴關係 - 本地庫已經加載到另一個類加載器
- 25. 試圖從Java(JNA)使用DLL。無法加載庫例外
- 26. 只有一次調用多次依賴加載的AJAX調用
- 27. 無法加載本機庫:找不到依賴庫
- 28. 加載共享依賴於其他共享庫庫
- 29. Java:加載依賴於其他庫的庫
- 30. Java:利用依賴項加載共享庫管理器
多機庫或多個JNA庫映射來自同一本地庫? – technomage
多個本地庫。它們完全不同。其中一個DLL依賴於另一個(我從Dependency Walker得到了這個) – wurmi
只要確保先通過JNA或System.loadLibrary()加載其中一個_without_依賴關係。 – technomage