我的任务是升级最初用 GFA Basic 编写的现有 16 位桌面应用程序。
我想知道是否有可能通过 C/JNI(或任何其他编程语言)访问这些 16 位 Dll 内的函数。
我想,我必须编写某种中间 DLL 才能访问 Java 类(或任何其他语言)的功能。
例如DLLTEST有函数的实现
$Library
'LNK Exe d:\DLLtest.dll
Procedure LIBMAIN(hInst&, DSeg&, HpSz&, lpCmd%)
q_dllname$ = "DLLtext.dll"
RETVAL 1 ' If LIBMAIN is used, then RETVAL must be TRUE
Return
Procedure WEP(SysExit&)
' ##############################################
// SysExit = 1 - ExitWindows
// SysExit = 0 - DLL vrijgegeven
RETVAL 0 ' ???????????
Return
Procedure TextTest(dc&)
$EXPORT TextTest
SETDC dc&
RGBColor 0
Local t$ = "Hello world" + Chr$(0)
Text 10, 10, t$
Beep
~TextOut(dc&, 10, 50, V:t$, Len(t$))
Beep
Return
上面的DLL文件依次被TESTTEXT.exe使用
// destination exe file
'LNK Exe d:\testtext.exe
DLL #7, "dlltest.dll"
DECL LONG TextTest(W)
ENDDLL
OpenW # 1
h& = Win(1)
SETDC GetDC(h&)
' RGBCOLOR 0
' GRAPHMODE R2_COPYPEN
~@@TextTest(_DC())
KeyGet k%
CloseW # 1
FreeDll 7
End
我想使用 Java/C(或任何其他现代编程语言)重写这个 TESTTEXT.exe。我想,我需要通过构建另一个 DLL 来在这个 DLL 和新的 EXE 之间建立一座桥梁。
我希望获得有关编写这个中间 DLL 的一些帮助。
另外,请告诉我这种解决方案是否有意义!
我们将非常感谢您的帮助。谢谢您的宝贵时间。