![](/img/trans.png)
[英]OpenCV 3.0.0 java.lang.UnsatisfiedLinkError in Eclipse
[英]OpenCV 4.3.0 java.lang.UnsatisfiedLinkError in Eclipse
我正在嘗試與 Eclipse 中的 OpenCV 4.3.0 的 Java 綁定進行一些模板匹配,但總是會導致此模板出現錯誤:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_0(Ljava/lang/String;I)J
拋出此異常的代碼行是這樣的:
flowerTemplate = Imgcodecs.imread("/templates/flowerpot_white.png", Imgcodecs.IMREAD_COLOR);
我在 StackOverflow 和互聯網上其他地方的類似問題上嘗試了許多建議的解決方案,包括:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.load(<path_to_the_dll>);
File opencvLibrary = new File(System.mapLibraryName(Core.NATIVE_LIBRARY_NAME));
System.load(opencvLibrary.getAbsolutePath());
UnsatisfiedLinkError 是運行 Java 程序時發生的運行時異常。 因此,將您的文件放在源文件夾中是行不通的。
您需要它在您的程序可以找到它的地方可用。
例如看這篇文章:
https://www.javaworld.com/article/2077520/java-tip-23--write-native-methods.html
在其中,他們將庫放置在 Linux 的庫路徑中。 在 windows 中,您同樣可以將其放在當前目錄(您正在運行的位置)或某個共享位置。
本文解釋了 Window 的 dll 搜索順序: https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
您不需要自己顯式調用 System.loadLibrary() 。 那是圖書館的責任。
您的問題是 OpenCV 未正確安裝在您的機器上或無法從 Eclipse 訪問。
有關如何在 Eclipse 中工作的說明,請參閱:
在刪除所有加載方法,然后將它們一個一個添加回來后,我確定該問題很可能是由 Eclipse 兩次加載本機庫文件夾引起的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.