현재 Eclipse CDT 및 MinGW를 사용하여 JNI 용 Dll을 컴파일하는 데 어려움을 겪고 있습니다.MinGW의 컴파일러 옵션 Wl, kill-at가 작동하지 않습니다.
튜토리얼을 따라, 고유 메소드를 선언 한 Java 클래스를 작성한 다음 javah를 사용하여 관련 헤더 파일을 가져 와서 C++ 클래스로 구현했습니다.
는 C++ 코드는 매우 간단하고 컴파일 작동하지만, 내가 자바 클래스로 라이브러리를로드 할 때이 오류가 얻을 : 나는 "탐구"
Exception in thread "main" java.lang.UnsatisfiedLinkError: Main.integerMethod(I)I
at Main.integerMethod(Native Method)
at Main.main(Main.java:12)
DLL을 및 방법 것을 발견 모두 "@ 14"와 같은 접미사가 있어야합니다. 문제는, 나는 이미이 아주 embarassing 태그들을 제거해야하는 -Wl, - kill-at 컴파일러 옵션을 사용하고있다. 그래서 왜 작동하지 않는가?
컴파일 로그는 다음입니다 :
**** Rebuild of configuration DLL for project JniCTest ****
**** Internal Builder is used for build ****
g++ -IC:\Program Files\Java\jdk1.6.0_13\include -IC:\Program Files\Java\jdk1.6.0_13\include\win32 -O3 -Wall -c -fmessage-length=0 -mno-cygwin -D__int64=long long -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -oMain.o ..\Main.cpp
g++ -o libJniCTest.dll -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -shared -olibJniCTest.dll Main.o
Build complete for project JniCTest
Time consumed: 375 ms.
컴파일러 옵션에 대한 뭔가 문제가 있습니까? 어떤 도움을 주셔서 감사합니다.
덕분에 나를 위해 일한 친구 – Akhilesh