2010-05-27 6 views
5

그래서 Java 프로그램에서 GPIB 장치와 통신하는 데 JPIB를 사용하고 있습니다. 그러나, 나는 걸쇠에 부딪쳤다. 최신 시스템은 64 비트 OS에서 구축됩니다. 그러나 jpib.dll 파일은 32 비트로 작성됩니다. 필자는 진정으로 64 비트에 의존하는 모든 종류의 호출을 생각할 수 없습니다.32 비트 .dll을 랩핑하여 64 비트 OS에서 작동하는 방법

실제 문제는 JPIB 프로젝트가 2006 년 9 월 이후에 업데이트되지 않았다는 것입니다. SourceForge를 통해 개발자에게 이메일을 보내려고했으나 아무 것도 할 수 없을 것이라고 생각합니다.

아무에게도이 문제를 알 수 있습니까? 또는 .dll을 AMD-64 호환으로 재 컴파일하는 방법을 알 수 있습니까?

+0

32 비트 기본 라이브러리를 사용하는 응용 프로그램과 함께 32 비트 JRE를 간단히 묶을 수 있습니까? 번들 된 JRE로 앱을 실행하십시오. 그런 다음 64 비트 아키텍처에서도 작동합니다. – KJW

답변

5

참고 : JPIB와 GPIB가 무엇인지 전혀 알지 못합니다.

DLL을 그대로 사용하려면 해당 DLL을 동적으로 연결할 수있는 응용 프로그램을 작성하고 일종의 IPC를 통해 응용 프로그램과 통신해야합니다.

해당 DLL을 다시 작성하려면 원본 및 모든 종속성을 가져와 빌드 도구를 설치해야합니다. MS Visual Studio를 설치하는 경우 x64 설치 방법과 관련하여 몇 가지 문제가있는 것 같지만 너무 어렵지는 않습니다. 하지만 설치 플랫폼에 따라 다를 수 있습니다. 아마도 x64에 설치한다면 그냥 작동 할 것입니다.

4

32 비트 VM은 64 비트 AMD 플랫폼 및 Intel EMT64 플랫폼에서 계속 작동합니다.

그러나 64 비트 프로세스에서 라이브러리를 사용하려면 java를 사용하면 도움이됩니다. 이 솔루션은 2 개의 JVM (32 비트 및 64 비트)을 사용합니다. 64 비트는 기본 응용 프로그램을 호스팅합니다. 32 비트 컴퓨터는 JPIB 라이브러리를 호스트합니다. 그런 다음 RMI을 사용하여 이들 사이를 연결합니다. 좀 더 자세히 :

  • JPIB 라이브러리에는 상당히 작은 API가 있습니다. Unfrotunately, 그것은 모두 클래스로 구현됩니다. 기본 드라이버 클래스와 동일한 메소드 서명을 갖는 인터페이스를 구현하여 라이브러리를 추상화합니다.
  • JPIB 클래스를 직접 호출하여 인터페이스를 구현하십시오. RMI를 사용하여 32 비트 JVM에서 RMI를 통해이 인터페이스를 노출합니다.
  • 64 비트 JVM에서 RMI를 사용하여 32 비트 VM에서 JPIB 인터페이스의 인스턴스를 가져옵니다. 이제는 해당 인터페이스에서 로컬 인 것처럼 메소드를 호출 할 수 있지만 실행을 위해 32 비트 VM에 대한 원격 호출로 구현됩니다.
0

32 비트 DLL에 썽크가있는 64 비트 래퍼를 작성하고 JNI 코드에서 32 비트 DLL 대신 64 비트 래퍼를 호출 할 수 있어야합니다. 썽킹은 상당히 고급이며 플랫폼에 종속적 인 C/C++ 주제입니다.

관련 문제