2011-09-29 7 views
15

Java에서 C++ 메소드를 호출하려고합니다. JNI에 대해 읽었지 만 모든 라이브러리 파일을 가져 오는 방법과 명령 줄에서 프로그램을 실행하기 위해 보관해야하는 위치를 얻지 못하고 있습니다.Java에서 C++ 호출하는 방법?

Java 클래스를 실행하기 위해 Eclipse 자체에서 C++ 메소드를 호출 할 수있는 방법이 있는가?

+0

이 스레드를 살펴보세요 - http://stackoverflow.com/questions/7212982/jni-unable-to-fix-this-error/7213943#7213943 – adatapost

+0

그냥 JNI 튜토리얼을 따라 수를 시작됨 –

+0

[NDK를 사용하는 방법? 'hello world'앱으로 시작하기 (http://stackoverflow.com/questions/4777935/how-to-use-ndk-starting-with-hello-world-app) –

답변

5

JNI가 너무 복잡하면 JNA을 살펴볼 수 있습니다. 첫 번째 경우에는 Java 및 네이티브 (C++/C/...) 코드에 조인 할 원시 래퍼 코드 (C 또는 C++)를 만들어야합니다. 두 번째 경우에는 런타임에 완료됩니다 (Java 코드 + config 만 필요합니다).

+0

"JNI"가 표준 답변입니다. 그러나 JNA가 고객의 요구 사항을 충족하면 - 멋지다! @ 페르난도 Miguelez : 좋은 제안! 공유해 주셔서 감사합니다. 다른 링크 : http://www.javaworld.com/javaworld/jw-02-2008/jw-02-opensourcejava-jna.html – paulsm4

6

이전에 JNI-C++ 브리징을 사용했지만 (조금만 생각해도) 약간 추울 수 있습니다. 모든 지저분한 보일러 플레이트 코드를 생성하는 데 도움이되도록 SWIG을 사용하는 것이 좋습니다.

2

간단한 인터페이스를 위해 JNA를 사용했으며 간단하고 우아했습니다. 복잡한 인터페이스가있는 경우 SWIG를 사용하는 것이 좋습니다.

SWIG와 JNI 및 JNA를 비교하는 좋은 대답이 있습니다. 질문이 제기 된 지 얼마되지 않았습니다.

SWIG vs JNI and JNA

1

JNA JNI 대신에 사용될 수있다.

당신이 필요로하는 자바 프로젝트에 포함되어야한다 JNA 항아리을 (https://github.com/java-native-access/jna#download) 다운로드하는 것입니다.

프로젝트 속성에서 C++ 라이브러리의 위치를 ​​제공해야합니다. :

  • 오른쪽 클릭 프로젝트는 VM 옵션에서
  • 실행
  • -Djava.library.path = "당신의 DLL 위치 C"를 포함한다.

이 사이트를 방문하여 Java 및 C++ 프로젝트의 소스 코드도 제공하는 예제를 참조하십시오. (http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads)

관련 문제