GFA Basic で作成された既存の 16 ビット デスクトップ アプリケーションをアップグレードするタスクを与えられました。これらの 16 ビット Dll 内の関数に C/JNI (または他のプログラミング言語) 経由でアクセスできるかどうかを知りたいです。Java クラス (またはその他の言語) から機能にアクセスするには、何らかの中間 DLL を作成する必要があると思います。
たとえば、DLLTEST には関数の実装があります。
$Library 'LNK Exe d:\DLLtest.dll
手順 LIBMAIN(hInst&, DSeg&, HpSz&, lpCmd%)
q_dllname$ = "DLLtext.dll" RETVAL 1 ' LIBMAIN を使用する場合、RETVAL は TRUE でなければなりません
戻る
手順 WEP(SysExit&) ' ############################################## ##
// SysExit = 1 - ExitWindows
// SysExit = 0 - DLL vrijgegeven
RETVAL 0 ' ???????????
戻る
手順 TextTest(dc&)
$EXPORT テキストテスト
SETDC DC&
RGB カラー 0
Local t$ = "Hello world" + Chr$(0)
テキスト 10、10、t$ ビープ音
~TextOut(dc&, 10, 50, V:t$, Len(t$))
ビープ
戻る
上記の dll ファイルは、TESTTEXT.exe によって使用されます。
// 宛先exeファイル
'LNK Exe d:\testtext.exe
DLL #7、「dlltest.dll」
DECL LONG TextTest(W)
ENDDLL
OpenW #1
h& = 勝利(1)
SETDC GetDC(h&)
'RGBCOLOR 0
' GRAPHMODE R2_COPYPEN
~@@TextTest(_DC())
KeyGet k%
閉じるW # 1
フリードール 7
終わり
Java/C (またはその他の最新のプログラミング言語) を使用して、この TESTTEXT.exe を書き換えたいと考えています。別のdllを構築して、このdllと新しいexeとの間にブリッジを構築する必要があると思います。この中間 dll の作成について、何らかの助けを得たいと思っていました。
また、この種の解決策が理にかなっている場合はお知らせください。
どうぞよろしくお願いいたします。お時間をいただきありがとうございます。