나는 컴파일 된 DLL (C/C++)을 가지고 있으며 Java에서 사용해야합니다. 그래서 SWIG를 사용하여 래퍼를 만들고 싶습니다. 사용 된 어떤 미리 컴파일 된 DLL 및/또는 Java 및/또는 Visual Studio (2015)SWIG 및 Visual Studio 2015와 함께 Java에서 컴파일 된 DLL 사용
- How to create a DLL with SWIG from Visual Studio 2010
- http://www.swig.org/Doc3.0/Java.html
- SWIG JNI Interface with DLL and declarations only
그러나 모든 예제 : 내가 좋아하는 모든 튜토리얼을 따라 . 구현을 위해 자신의 cpp 파일을 사용할 때 (그리고 헤더를 구현하는 외부 DLL을 사용하지 마십시오) 모든 것이 잘 작동합니다 (단일 DLL로 컴파일하고 Java에서 호출).
원하는 것은 무엇입니까? 미리 컴파일 된 DLL (example.dll)과 헤더 (example.h) 및 SWIG 헤더 파일 (example.i)이 있습니다. 모든 것을 "래퍼 DLL"로 컴파일하고,이 파일을 Java에서로드하고 미리 컴파일 된 DLL (example.dll)에 액세스하십시오. 자세히
내 단계 :
- 새로운 VS 클래스 라이브러리 프로젝트
- 이 시간을 추가하고 난 (예에서 같은) 내가 파일에 대한 사용자 지정 빌드 단계를 추가
- 파일
- Java 파일 및 example_wrap.cxx 파일이 생성되었습니다.
- example_wrap.cxx를 추가하고 Java 포함을 추가하고 미리 컴파일 된 헤더를 사용하지 마십시오
- 컴파일 이제 전체 프로젝트를 생성
- 이 연결에 실패하지 않습니다 (자바 포함, 더 미리 컴파일 된 헤더, 아니 CLR 추가) (오른쪽인가요?) 튜토리얼처럼
- 설정 프로젝트 설정 example.lib하는 example_wrap.cxx example_wrap.obj에서 오류 LNK2019.
나를 도와 줄 사람이 있습니까?
내가 얻지 못하는 것 : 결과는 "example.dll"이됩니다. 이 DLL을 Java (System.load/loadLibrary)와 함께 사용해야합니다. 이 SWIG DLL은 어떻게 내부의 모든 로직을 가진 "원본"example.dll에 액세스 할 수 있습니까?
Java 대신 Python을 사용하면 동일한 오류가 발생합니다 (LNK2019 - 해결되지 않은 외부 기호).