0

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 の作成について、何らかの助けを得たいと思っていました。

また、この種の解決策が理にかなっている場合はお知らせください。

どうぞよろしくお願いいたします。お時間をいただきありがとうございます。

4

2 に答える 2

2

32 ビット アプリケーションから 16 ビット DLL を使用すると、Microsoft が "フラット サンキング" と呼んでいるものを使用します。フラット サンキングは、Windows の 16/32 ビット ハイブリッド バージョン (Windows 95、98、98SE、Me) でのみ使用できます。

あなたが望むものは、合理的に最新のバージョンの Windows ではサポートされていません。

于 2009-12-18T16:10:53.933 に答える
0

私はジェリーに同意します。それまでの間、この投稿を見始めるかもしれません: http ://www.atari-forum.com/viewtopic.php?f=69&t=4826&start=20

于 2009-12-18T16:30:07.327 に答える