2011-12-12 3 views
4

Java 코드에서 .NET DLL을 사용하려고합니다 (C++ 원시 코드 사용).Java에서 .NET DLL 호출

흐름은 다음과 같습니다.

  1. 이 코드는 수이 DLL Using this step-by-step guide from Microsoft를 사용하는 비주얼 스튜디오 2010

  2. 만든 네이티브 C++ 코드 (콘솔 응용 프로그램)에서 C# 클래스 라이브러리 유형의 프로젝트를 사용하여 .NET DLL을 생성에 성공적으로 DLL 코드를 호출합니다.

  3. 일부 원시 메소드를 사용하여 Java 코드를 작성하고 C++ DLL 프로젝트의 헤더 및 구현 된 헤더 (관련 메소드의 예제에서 원래 코드로 이동하여 일부 변수를 전역으로 작성)를 작성했습니다.

이 DLL은 성공적으로로드되지만 관리되는 클래스의 인터페이스 포인터를 만드는 동안 코드가 실패합니다.

// Create the interface pointer. 
ICalculatorPtr pICalc(__uuidof(ManagedClass)); 

이 호출이 콘솔 응용 프로그램을 성공적으로 반환하지만 JNI 흐름 불구하고 호출 할 때, JVM 충돌 유의하시기 바랍니다 마이크로 소프트 가이드에서 snipper를 참조하십시오.

+2

http://jni4net.sourceforge.net/을 시도하고 C++ 레이어를 완전히 건너 뛸 수 있습니다. –

+0

예 시도해 보았지만 멋졌습니다.하지만이 솔루션에서 제 3 자 라이브러리를 사용하지 않아야합니다. 그 이유는 무엇입니까? 이 일을 처음부터. –

+0

그래서 프로젝트가 사용하는 방법을 구현하십시오. –

답변

1

Java 코드가 64 비트 JVM에서 실행 중이며 32 비트 Java 코드로 교체되었으며 JVM이 더 이상 충돌하지 않습니다.

+0

네이티브/관리 DLL 등록이 필요하지 않은 대체 방법도 하나 발견했습니다. 곧 기사를 게시 할 예정입니다. –

+0

다음은 기사 및 샘플 코드에 대한 링크입니다. http://codefry.blogspot.com/2012/01/calling-net-dlls-from-java-code-without.html –