0

我的任务是升级最初用 GFA Basic 编写的现有 16 位桌面应用程序。我想知道是否有可能通过 C/JNI(或任何其他编程语言)访问这些 16 位 Dll 中的函数。我想,我必须编写某种中间 DLL 来访问 Java 类(或任何其他语言)的功能。

例如 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 直流&

RGB 颜色 0

本地 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

开放式#1

h& = 赢(1)

SETDC GetDC(h&)

' RGB 颜色 0

' GRAPHMODE R2_COPYPEN

~@@TextTest(_DC())

密钥获取 k%

关闭W#1

自由DLL 7

结尾

我想用 Java/C(或任何其他现代编程语言)重写这个 TESTTEXT.exe。我想,我需要通过构建另一个 dll 在这个 dll 和新的 exe 之间建立一座桥梁。我希望得到一些关于编写这个中间 dll 的帮助。

另外,让我知道这种解决方案是否有意义!

您的帮助将不胜感激。谢谢你的时间。

4

2 回答 2

2

在 32 位应用程序中使用 16 位 DLL 涉及 Microsoft 所称的(称为)“平面转换”。Flat Thunking在 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 回答