嗨,我在尝试使用JNA(在Windows平台上的vscode中)调用C库时遇到了问题。
我从以下位置获取了ffmpeg共享库的副本:https://www.gyan.dev/ffmpeg/builds/
具体是:https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.7z
我将bin子目录的内容复制到了clojure项目的"lib"目录中。我还将该目录添加到了我的路径中,并且可以愉快地调用ffmpeg应用程序。
以下是我的deps.edn的内容
{:deps
{net.java.dev.jna/jna {:mvn/version "5.6.0"}}
:paths ["src" "lib"]
}
以下是代码
(ns jnatest)
(import (com.sun.jna Native Pointer))
(gen-interface
:name jna.lib_avformat
:extends [com.sun.jna.Library]
:methods [[avformat_alloc_context [] Pointer]])
(def avformat
(Native/loadLibrary "avformat-58" jna.lib_avformat))
在调用Native/loadLibrary时,我遇到了错误
; 执行错误(UnsatisfiedLinkError)在com.sun.jna.Native/open (Native.java:-2)。
; %1不是一个有效的Win32应用程序。
我最初从techascent jna实现开始,https://clojars.org/techascent/tech.jna,并遇到了类似的问题,所以我回到了基础知识。
我猜问题是出在库上,但在开始重新编译所有的ffmpeg库之前,我想请问是否有简单的方法可以尝试。
任何提示都受欢迎。