2015-01-20 7 views
0

Gdi32 라이브러리의 "GetObject"를 호출하기 위해 JNA 용 네이티브 라이브러리 매핑을 만들었습니다.JNA에서 Gdi32.GetObject 호출

int GetObject(HANDLE hgdiobj, int cbBuffer, Pointer lpvObject); 

을하지만이 서명이 잘못된 것 같다 : See: MSDN

내 매핑처럼 보인다. 호출시 예외가 발생합니다.

Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: Error looking up function 'GetObject': The specified procedure couldn't be found. 

무엇이 잘못 되었습니까?

답변

0

필요한 정보는 링크 된 설명서에서 찾을 수 있습니다. 즉

 
DLL      Gdi32.dll 
Unicode and ANSI names GetObjectW (Unicode) and GetObjectA (ANSI) 

이, 함수가 Gdi32.dll라는 이름의 DLL에서 찾을 수 있습니다 : 해당 문서의 하단에이있다. 또한 두 가지 버전 인 유니 코드 버전과 ANSI 버전이 있으며 이름이 적절하게 붙습니다. 존재하지 않는 함수 GetObject에 바인드하려고합니다.

+0

대부분의 A/W 스플릿을 자동으로 처리하기 위해 JNA 라이브러리 초기화 프로그램에 전달 된 옵션을 사용할 수 있습니다. [JNA에서 제공하는 w32 플랫폼 매핑] (https : /)에서 [W32APIOptions] (https://github.com/twall/jna/blob/master/src/com/sun/jna/win32/W32APIOptions.java) /github.com/twall/jna/blob/master/contrib/platform/src/com/sun/jna/platform/win32/User32.java#L36) 자바'String'과 장식되지 않은 함수 이름을 자동으로 매핑합니다 (예 :'GetObject ')를 적절한 원시 네이티브 문자열 (ASCII 문자열과'GetObjectA' 또는 유니 코드 문자열 및'GetObjectW')로 변환합니다. – technomage