2011-08-12 5 views
3

내 jTabbedPane 프로젝트 내에 Avogadro (1)로 알려진 컴퓨터 화학/물리 시각화 도구를 포함하려고합니다. QT Jambi (1)를 사용하여 Eclipse의 Avogadro UI에서 JUI (Java GUI)를 생성했습니다. 나는 그 시도에 성공했지만, GUI는 실행 중에 (분명히 기능이 없었다).SWIG를 통한 C++ 및 Java GUI 링크

간단히 말해서 CMake (Eclipse로 가져 오기가 성공하지 못했습니다)로 컴파일 할 수있는 방대한 프로젝트의 C++ 라이브러리에 액세스하려고합니다. 조금 더 나쁘게 만들기 위해서 GUI와 관련된 나머지 부분과 연결하여 기능을 제공하는 .cpp 파일과 인터페이스해야한다고 생각합니다. 위에서 언급 한 cpp 파일의 함수와 인터페이스하기 위해 SWIG를 사용할 계획이며 Java GUI에 기능을 추가하기 위해 C++ 라이브러리로 작업 할 인터페이스를 계획합니다.

어떻게 할 수 있습니까? 전체 프로젝트를 수행해야합니까?

+1

모든 알고리즘 라이브러리를 정적 라이브러리로 컴파일 한 다음 JNI 글루 (공유 라이브러리 포함)를 다시 C++로 작성하여 "GUI를 제어하는".cpp 파일이됩니다. 누락 된 기호 및 UnsatisfiedLinkErrors를 해결하는 약간의 디버깅 및 Java-C++ 인터페이스 – user965369

+0

JNI 아교를 만들기 위해 사용할 수있는 것은 무엇입니까? 통음? – Mjones8323

+0

거기 밖으로 도구가 있지만 처음부터 그것을 작성하는 것이 좋습니다. JNI 예제에 대한 튜토리얼을 살펴보고 궁극적으로 관련 함수를 JNI_OnLoad 함수에 등록합니다. 그것의 진짜로 아주 간단한 (SWIG를위한 진짜 필요 없음) – user965369

답변

2

Avogadro는 오픈 소스처럼 보입니다. 따라서 소스 코드를 다운로드하고 전체 프로젝트를 다운로드 할 수 있습니다. 이렇게하면 C++에서와 동일한 Java 클래스를 사용할 수 있습니다.

아보가드로 기능의 하위 집합 만 원한다면 C++에서 간단한 브리지 클래스를 만드는 것이 좋습니다. 이 브릿지 클래스는 아마도 다른 헬퍼 클래스와 함께 SWIG 될 수 있습니다. 이제 Java에서 Bridge 클래스를 사용하여 Avogadro 라이브러리를 실행합니다.