Java 使用JNA调用Gdi32.GetObject
为了调用Gdi32库的“GetObject”,我为JNA创建了一个本机库映射 我的映射如下所示:Java 使用JNA调用Gdi32.GetObject,java,winapi,jna,Java,Winapi,Jna,为了调用Gdi32库的“GetObject”,我为JNA创建了一个本机库映射 我的映射如下所示: int GetObject(HANDLE hgdiobj, int cbBuffer, Pointer lpvObject); 但这个签名似乎不正确。调用会引发此异常: Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: Error looking up function 'GetObjec
int GetObject(HANDLE hgdiobj, int cbBuffer, Pointer lpvObject);
但这个签名似乎不正确。调用会引发此异常:
Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: Error looking up function 'GetObject': The specified procedure couldn't be found.
怎么了?您需要的信息可以在链接到的文档中找到。该文件的底部是: DLL Gdi32.dll Unicode and ANSI names GetObjectW (Unicode) and GetObjectA (ANSI) DLL Gdi32.DLL Unicode和ANSI名称GetObjectW(Unicode)和GetObjectA(ANSI)
换句话说,该函数位于名为
Gdi32.DLL
的DLL中。有两个版本,一个是Unicode版本,一个是ANSI版本,有适当的后缀名。您可能正试图绑定到一个名为GetObject
的函数,该函数不存在。您可以使用传递给JNA库初始值设定项的选项自动处理大部分a/W拆分。用于将Java字符串
和未修饰的函数名(例如GetObject
)自动映射到其相应的本机等效项(ASCII字符串和GetObjectA
或unicode字符串和GetObjectW
)。