Доступ к 16-битной DLL - PullRequest
       9

Доступ к 16-битной DLL

0 голосов
/ 18 декабря 2009

Мне было дано задание обновить существующее 16-битное приложение для рабочего стола, изначально написанное на GFA Basic. Я хочу знать, есть ли возможность доступа к функциям внутри этих 16-битных Dll через C / JNI (или любой другой язык программирования). Я думаю, мне нужно написать какую-то промежуточную DLL для доступа к функциям из класса Java (или любого другого языка).

Например DLLTEST имеет реализацию функций

$ Библиотека 'LNK Exe d: \ DLLtest.dll

Процедура LIBMAIN (hInst &, DSeg &, HpSz &, lpCmd%)

q_dllname $ = "DLLtext.dll" RETVAL 1 'Если используется LIBMAIN, тогда RETVAL должен быть ИСТИНА

Возвращение

Процедура WEP (SysExit &) "####################################################

// SysExit = 1 - ExitWindows

// SysExit = 0 - DLL vrijgegeven

RETVAL 0 '???????????

Возвращение

Процедура TextTest (dc &)

$ EXPORT TextTest

SETDC DC &

RGBColor 0

Local t $ = "Hello world" + Chr $ (0)

Текст 10, 10, т $ Beep

~ TextOut (dc &, 10, 50, V: t $, Len (t $))

Beep

Возвращение

Приведенный выше dll-файл в свою очередь используется TESTTEXT.exe

// целевой файл exe

'LNK Exe d: \ testtext.exe

DLL # 7, "dlltest.dll"

DECL LONG TextTest (W)

ENDDLL

OpenW # 1

ч & = победа (1)

SETDC GetDC (h &)

'RGBCOLOR 0

'GRAPHMODE R2_COPYPEN

~ @@ TextTest (_DC ())

KeyGet k%

CloseW # 1

FreeDll 7

Конец

Я хочу переписать этот TESTTEXT.exe, используя Java / C (или любой другой язык программирования модеров). Я думаю, мне нужно построить мост между этой dll и новой exe, построив другую dll. Я надеялся получить помощь в написании этой промежуточной библиотеки DLL.

Кроме того, дайте мне знать, если такое решение имеет смысл!

Ваша помощь будет принята с благодарностью. Спасибо за ваше время.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2009

Использование 16-битной DLL из 32-битного приложения включает в себя то, что Microsoft называет (называется) "плоским thunking". Фиксированное Thunking доступно только в 16/32-битных гибридных версиях Windows (Windows 95, 98, 98SE, Me).

То, что вы хотите, не поддерживается ни в одной разумно текущей версии Windows.

0 голосов
/ 18 декабря 2009

Я согласен с Джерри. А пока вы можете посмотреть этот пост: http://www.atari -forum.com / viewtopic.php? F = 69 & T = 4826 & начать = 20

...