2012-05-04 4 views
3

내가 개발 한 독점 라이브러리 (DLL)를 사용하여 장치를 업그레이드하고 싶습니다. 라이브러리는 MFC 앱을 사용하여 잘 작동합니다. 그러나 여기에서의 비틀기는 우리가 브라우저에서이 작업을 으로 만들어야한다는 것입니다.64 비트 OS에서 32 비트 JVM이있는 JNA

제 아이디어는 애플릿을 사용하고 네이티브 DLL을 호출하여이 작업을 수행하는 것입니다. 내 테스트 자바 애플리케이션으로 모든 것이 잘 작동했다. 그런 다음 애플릿으로 시도한 다음 아무 것도 작동하지 않았습니다.

32 비트 VS 64 비트 JVM으로 문제를 좁혔습니다. 설명해 드리겠습니다 : 제가 사용하고있는 Eclipse IDE는 64bit JVM을 사용하고 있습니다. 이후 Windows 7 64bit입니다. 그러나 브라우저는 32 비트 JVM을 사용하며 작동하지 않습니다.

두 함수의 차이는 내 함수에 전달 된 매개 변수입니다. 각각에 의해 자바 일치

bool UPGRADELIB_API Connect(const char* serverAddress, unsigned short serverPort); 
bool UPGRADELIB_API Upgrade(const char* pFilePath); 

을 : 다음은 DLL이 노출 기능의 몇 가지 예를의

boolean Icon_ConnectClientNode(String serverAddress, int serverPort); 
boolean Icon_Upgrade(String pFilePath); 

내 자바 테스트 GUI는이 기본 lib 디렉토리에 "으로 192.168.xx"에 대한 전달 IP 주소는 입니다. 64bit에서 이전에 말했듯이 모든 것이 잘됩니다. 심지어 포트가 올바르게 전달되지, 62384

당신이 볼 수 있듯이 : 나는 C에서 serverAddress 및 서버 포트를 인쇄하면 32 비트에서, 그것은

(널)를 보여줍니다.

나는 일주일 동안이 일을 계속 해왔다. 나는 머리를 너무 세게 당겨서 곧 내게 가지 않을 것이다 ... 나를 도와주세요!

+0

Java에서 긴 변수는 항상 64 비트이기 때문에 문자열 대신 긴 문자열을 사용하면 문제가 해결 될 수 있습니다. 그런 다음 바이트를 문자열 형식으로 변환하십시오. –

+0

32 비트 JVM (또는 심지어 Eclipse의 32 비트 버전)을 설치하고이를 테스트하십시오. 제대로 작동하면 브라우저 내에서 작동하게하는 문제로 이동할 수 있습니다. – technomage

+0

@technomage 이클립스에서 이미 32 비트 JVM을 테스트했다는 것을 잊어 버렸다. Eclipse의 64 비트 JVM은 작동하지만 32 비트는 작동하지 않습니다. 내 생각 엔 64 비트 OS -> 64 비트 JVM = 64 비트 OS -> 32 비트 JVM = 오정렬? – murphyalexandre

답변

0

오류를 발견했습니다 : Java long은 32 비트 및 64 비트에서 C/C++과 동일한 크기가 아닙니다.

어리석은 나를.

+0

거기에, 그 .... –

관련 문제