3

私が開発した独自のライブラリ (DLL) を使用してデバイスをアップグレードしたいと考えています。ライブラリは、MFC アプリを使用して正常に動作します。ただし、ここでのひねりは、これをブラウザで機能させる必要があるということです。

私のアイデアは、アプレットを使用してから、ネイティブ DLL を呼び出してこれを機能させることでした。私のテスト Java アプリケーションでは、すべてが正常に機能していました。次に、アプレットを試してみましたが、何も機能しませんでした。

問題を 32 ビット VS 64 ビット JVM に絞り込みました。説明させてください。私が使用している Eclipse IDE は、Windows 7 64 ビットを使用しているため、64ビットJVMを使用しています。ただし、ブラウザは32 ビット JVMを使用しており、これは機能しません。

2 つの違いは、関数に渡されるパラメーターです。DLL が公開する関数の例を次に示します。

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

それぞれJavaで一致するものは次のとおりです。

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

私の Java テスト GUI は、IP アドレスの場合はこのネイティブ ライブラリ「192.168.xx」 、ポートの場合は50005を渡します。64bitでは、先に述べたようにすべて問題ありません。32bitで、serverAddress と serverPort を C で出力すると、次のように表示されます

(ヌル):62384

ご覧のとおり、ポートも正しく渡されていません。

私はこれを1週間続けていますが、頭からたくさんの髪を引っ張っているので、すぐには抜けません...助けてください!

4

1 に答える 1

0

エラーが見つかりました: long を渡していましたが、Java long は 32 ビットおよび 64 ビットの C/C++ long と同じサイズではありません。

愚かな私。

于 2013-02-01T18:42:08.867 に答える