2017-12-18 23 views
-1

내 Java 프로젝트에 C++ 사용자 지정 lib가 있습니다. 이 커스텀 C++ lib는 파이버 (boost C++ 라이브러리)를 사용합니다. 자바에서 C++ 광섬유를 호출 할 수 있습니까? 사실상 섬유는 VM이 ​​모르는 경우에도 VM 스레드 내부에서 작동합니다. 그래서 모두 괜찮을 수도 있지만 어쩌면 거기에 VM 디자인에 대해 알고,이 사용법에서 예상되는 몇 가지가 무엇입니까? (주의하시기 바랍니다 그것은 일반적인 C++ 호출이 아니므로 C++에서 파이버 프레임 워크를 사용하므로 C++의 TLS가 Java와 충돌 할 수 있습니다 스레드 컨텍스트 스위치는 동일합니까?)Java에서 호출 된 Boost C++ 광섬유에 대한 JNI 호출을 만들 수 있습니까?

답변

0

Java에서 C++ 섬유를 호출 할 수 있습니까? ?

예, Java에서 C++ 라이브러리를 호출 할 수 있습니다. C++ 모듈을 Java로 호출하려면 Java Native Interface (JNI)을 사용할 수 있습니다.

그래서 C++의 내장 라이브러리에 액세스하려면 래퍼 라이브러리를 작성해야합니다. Java 코드는 JNI를 사용하여 Wrapper C++ Library에 연결하고 Wrapper Library는 C++의 광섬유 라이브러리에 연결합니다.

JNI 통화를 이해하려면 tutorial을 참조하십시오.

+0

죄송하지만 질문은 또 다른 것이 었습니다. 나는 JNI를 안다. C++ Fiber는 VM 내부에 직접 영향을 미칠 수 있습니다. –

+1

포팅에 대한 테스트 후 자바에서 C + + 부스트 파이버 ... 내가 말할 수있는, 그것은 작동하지 않는다 (그것은 C++ 섬유가 C++ 코드를 실행하고있는 경우에만 작동한다). 그래서 위의 응답이 잘못되었다. 이 실험은 향후 상호 운용성에 중요한 영향을 미칩니다. Java는 C++과의 상호 운용성이 향상되지 않습니다. 섬유는 높은 레벨에서 투명하기 위해 OS 커널 레벨에서 구현되어야합니다. –

+0

결과를 공유해 주셔서 감사합니다. –