Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Линковка 16-битных .obj в Win32-приложении??

10K
25 мая 2005 года
Devicetator
7 / / 13.05.2005
Здравствуйте,
позарез необходимо кое-какие функции из старого 16-битного .obj'а использовать. Проблема в том, что написан он был на асме, а исходники безвозвратно утеряны. Подскажите, что можно сделать? Используем BCB 6, при попытке прилинковать этот .obj линкер ругается - мол, не буду линковать 16-битный код в 32-битное приложение и всё...
1.9K
25 мая 2005 года
mail0
137 / / 09.05.2005
Цитата:
Originally posted by Devicetator
Здравствуйте,
позарез необходимо кое-какие функции из старого 16-битного .obj'а использовать. Проблема в том, что написан он был на асме, а исходники безвозвратно утеряны. Подскажите, что можно сделать? Используем BCB 6, при попытке прилинковать этот .obj линкер ругается - мол, не буду линковать 16-битный код в 32-битное приложение и всё...


А ты не пробовал пролинковать через какой-нить masm ?

8.8K
26 мая 2005 года
Xenofob
23 / / 23.02.2005
Я на асме почти не писал, поэтому извините если буду не прав.
Но мне кажется obj файл можно прогнать через дизассемблер и где надо сделать ассемблерную всавку в своей программе.
1.9K
27 мая 2005 года
mail0
137 / / 09.05.2005
идите сюда http://forum.codenet.ru/showthread.php?threadid=23428
10
28 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by mail0
идите сюда http://forum.codenet.ru/showthread.php?threadid=23428


...Когда жертва идет на Зов, она ничего не соображает. Зов ведет ее...

10K
28 мая 2005 года
Devicetator
7 / / 13.05.2005
Вопрос не в том, как или чем линковать экзешники, тут всё прозрачно. У меня проблема - надо использовать функции из 16-битного объектника в 32-битном приложении. Притом что просто так этот объектник не линкуется, его исходников нет и достать негде. Переписать эти функции заново возможным не представляется.
10
28 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Devicetator
У меня проблема - надо использовать функции из 16-битного объектника в 32-битном приложении.


Хоть под Винду они написаны?

Я сам никогда подобными проблемами не занимался, но наверное, два варианта есть:
- дизассемблировать, и потом или скомпилить 32-битным ассемблером, или сделать вставки в программе
- попробовать собрать 16-битную DLL и сделать thunk к ней

Если написано под DOS, только первый путь подходит. Ну, а решение задачи вторым способом - совершенно другая опера.

10K
29 мая 2005 года
Devicetator
7 / / 13.05.2005
Freeman
"попробовать собрать 16-битную DLL..."
КAK?.. (подробно напиши, плз)
Если собирать DLL так, то в полученной dll нет экспортируемых функции!!! Что не есть гуд!:
// CX24EO1.OBJ - тот самый .obj (в аттаче лежит)
// CDREG - функция из него
#include <vcl.h>
#pragma hdrstop
USEOBJ("CX24EO1.OBJ");
void _export CDREG(unsigned int*,int, int, int, int);
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
В общем-то ничего удивительного: тело фунции CDREG не указано. Как заставить брать его из .obj?
10
29 мая 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Devicetator
"попробовать собрать 16-битную DLL..."
КAK?.. (подробно напиши, плз)


Каком кверху! Найти Visual C или tlink бородатой версии, собирающей объектники под Win16. Потом tlink /? и вперед. Наверное, придется создавать ручками def-файл (если его еще нет).

Цитата:
Если собирать DLL так, то в полученной dll нет экспортируемых функции!!!
В общем-то ничего удивительного: тело фунции CDREG не указано. Как заставить брать его из .obj?


А заголовочный файл к объектнику есть?

10K
30 мая 2005 года
Devicetator
7 / / 13.05.2005
Цитата:
Originally posted by Freeman
Каком кверху! Найти Visual C или tlink бородатой версии, собирающей объектники под Win16. Потом tlink /? и вперед. Наверное, придется создавать ручками def-файл (если его еще нет).


Есть tlink (из ВС3), собирал def_file (только не ручками).
Использовали следующий код, но точку входа в Dll в ВС3 не знаем как написать, может так?..
#include <windows.h>
void FAR _export CDREG(unsigned int*,int, int, int, int);
int WINAPI DllMain(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}


Def_file(кусок для ф-ции CDREG):

LIBRARY CX24EO1.DLL
EXPORTS
...
@CDREG$qpuiiiii @1 ; CDREG(unsigned int*,int,int,int,int)
...


Цитата:
А заголовочный файл к объектнику есть?


Нет. Гольный объектник... :(

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог