你好,我在尝试使用 JNA 调用一个 C 库(在 Windows 平台上,使用 vscode)时遇到了问题。
我从: https://www.gyan.dev/ffmpeg/builds/ 复制了一份 ffmpeg 共享库的副本。
特别是: 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 库之前,我想知道是否可以尝试一些简单的方法。
任何提示都受欣赏。