RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Несколько вопросов по программированию в OS/2 (продолжение)


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : XPEH, 2:5050/13.29, http://zuko.mitm.ru/
To : Илья Агафонов
Subj : Несколько вопросов по программированию в OS/2 (продолжение)


> > в VP описании этих функций они должны называться в точности также, плюс после
> > каждой надо писать Cdecl; OrgName;
> Спасибо за помощь. Но... Собраться-то оно собралось, а вот при попытке вызвать какую-либо ф-цию из этих *.obj сразу появляется Exception XCPT_ACCESS_VIOLATION ;((( Кажется, чего-то я не то намудрил с типами вызова ф-ций. Подскажи, пожалуйста, елси не трудно, с какими ключиками надо *.asm'ы компилировать wasm'ом, чтобы вызывалось это всё нормально.

1. можно и нужно посмотреть где именно, как и когда оно там падает.
ну для этого надо понимать конечно ;)

2. нужно чтоб функи которые ты непосредственно будешь вызывать из VP были в си
описаны в cdecl каллинг конвенции.
это можно сделать (в си тексте) примерно как:

int __cdecl func1 (params.....)
{
...
}

или

void __cdecl func2 (params.....)
{
...
}

ну кароче ты понял ;)

3. в VP (как уже было сказано выше) - они тоже должны быть описяны как Cdecl;

4. кроме этого есть еще много "за" и "если" в определениях сегментов в си и
паскале, в использовании в си коде сегментных регистров и прочих системных штук.

5. ну и наконец - все это может оказаться бесполезным. твой си код наверняка
использует функции си рантайма. heap. и прочее. обычно перед использованием
оно требует быть проинициализированно. что у тебя не происходит при юзании
из VP. теоретически можно заимпортить в VP и функу иниц рантайма и дернуть ее
при старте программы. практически же - надо смотреть. а может этого и не требуется ;)

так что самое милое как не крути - DLL ;)

а вообще-то надо смотреть в конкретно что там у тебя.
но так ломает :)
давай ты еще сам подолбаешься - и когда совсем отчаешься и разуверишься в жизни -
тогда приходи опять :)


Wed 11 Feb 2004 22:27 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.2.1) Gecko/20021




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.