2012-09-25 3 views
2

dll에서 메소드를 호출해야하지만 Java Native Access를 사용하여 해당 이름은 _setParameterX @ 12 및 _getParameterX @ 20과 같습니다. FunctionMapper 또는 StdCallFunctionMapper를 올바르게 사용하려면 어떻게해야합니까? 어떻게 이러한 함수를 호출합니까? jna 문서는 다소 모호합니다.JNA에서 밑줄과 @를 사용하여 메소드를 호출하는 방법

+0

Windows DLL에 C 언어로 된 기능 이름이있는 것 같습니다. http://mearie.org/documents/mscmangle/. JNA 매핑에서'setParameterX'와'getParameterX'를 바로 사용할 수 있습니다. –

답변

1

이러한 함수는 stdcall 호출 규칙을 사용합니다. 접미사는 스택에서 들어오는 인수의 크기를 나타냅니다.

적절한 매핑을 자동으로 생성하려면 StdCallFunctionMapper을 사용해야합니다. W32API options에 사용 된 것과 유사한 옵션을 만듭니다 (함수 매퍼는 W32 API 함수에 대해 -W 또는 -A 접미사를 자동으로 선택합니다). 새 옵션 맵을 Native.loadLibrary 호출에 전달하십시오.

또한 함수를 호출 할 때 적절한 호출 규칙이 사용되도록 StdCallLibrary 인터페이스를 구현해야합니다.

+0

정보를 주셔서 감사합니다 .... 내받은 편지함을 읽을 수 없으므로 내 컴퓨터에서 stackoverflow.com에 액세스하는 데 문제가 있습니다 .... – user1565845

관련 문제