문제

레거시 J ++ 프로젝트를 상속했습니다. 이 프로젝트를 표준 Sun Java로 업그레이드했습니다.

그러나이 프로젝트에는 Java Code가 Microsoft에 따른 Java 코드가 말하는 기본 C ++ DLL이 포함되어 있습니다. RNI 프레임 워크.

말할 것도없이, System.LoadLibrary ( "myrninativedll")를 호출하면 이제 의존성 중 하나를 찾을 수 없다고 말하면서 비 동정심이 발생합니다.

나는 c ++ rni dll을 Jni dll로 마이그레이션하는 방법을 완전히 단서가 없다. 어디서부터 시작 해야할지 모르겠습니다. C ++ 소스 코드가 있지만 JNI DLL을 구축하는 방법을 모르겠습니다. Java 전문가가 저를 지적 할 수있는 팁/자습서/온라인 자료가 있습니까?

도움이 되었습니까?

해결책

라이센스가 허용되는 경우 (LGPL) 자바 기본 액세스 JNI보다 다소 친근한 FFI를 제공합니다. 포팅은 RNI 층을 벗겨 내고 간단한 'C'-Callable API를 노출시키는 데 감소 할 수 있습니다.

다른 팁

보세요 JNA - RNI DLL에 직접 액세스 할 수 있습니다. 또는 적어도 JNI를 수동으로 수행하는 것보다 훨씬 쉽게 포팅하는 작업이 가능합니다.

가능하면 순수한 Java에서 C ++ 코드를 다시 작성하여 RNI-> JNI 포팅 문제를 피하는 것이 좋습니다.

JNI 코드를 작성하려면 엄청난 양의 치료가 필요하며 잘못된 경우 JVM 안정성이 위험에 처하게됩니다. 제 조언은 가능하다면 피하는 것입니다.

나는 Microsoft의 RNI를 사용한 적이 없지만 Sun 's JNI 만 사용했지만 RNI 스타일 DLL을 JNI 스타일 DLL 인 것처럼 직접 사용할 수 없을 것으로 기대합니다. 또한 RNI를 자동으로 변환하거나 JNI로 브리지를하는 것을 알지 못합니다.

C ++ RNI DLL의 소스가 있는지는 언급하지 않지만 프로젝트 상속을 언급 한 이후로 생각합니다. C ++/C 경험이 있고 RNI DLL이 제공하는 기능에 대한 좋은 아이디어가있는 경우 JNI로 옮기는 것이 너무 어렵지 않아야합니다. 포팅에 투자 한 시간은 앞으로 나아가는 것을 유지하기 위해 돈을 지불 할 것입니다.

JNI 항목에 제공 한 링크 위키 백과 JNI로 코딩하는 데 도움이되는 많은 링크가 있습니다. 좀 더 자세히하지 않으면 다른 조언을하기가 어렵습니다.

Java Native Interface : 프로그래머 가이드 및 사양 JNI 코드를 작성하기 위해 찾은 최고의 리소스입니다. RNI-> JNI를 다루지는 않지만 JNI의 작동 방식을 배우기위한 훌륭한 출발점입니다.

*실제로는 매우 건조하고 읽는 것이 특히 재미 있지는 않지만 내가 찾을 수있는 최고입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top