|
|
|
DLL, CodeWarrior
|
|||
|---|---|---|---|
|
#18+
Друзья, у меня вопрос по dll, сделанную на Metrowerks Code Warrior. DLL, сгенерированная им, прекрасно входит в работу, вызывается одна из функций и даже успеввает что-то сделать. Но когда дело доходит до return, то PB выдаёт сообщение типа Invalid Stack Pointer. MWCW имеет для dll специальный template, и там составляющие его функции имеют совершенно стандартный описатель: #define IMPEXP __declspec ( dllexport ) , полностью отвечающий рекмендациям по РВ, данным где-то на ринге, кажется, на PBDR.com. Описание LOCAL EXTERNAL функции тоже стандартное. Стоящие рядом вызовы API работают прекрасно. Параметры также передаются правильно, в соотв. с типами для С и РВ. Ошибка не возникает лишь в одном случае -- ежели dll вообще не имеет параметров. Но кому, простите, нужна void функция в DLL (:? Что я делаю не так? ИМХО, на мой непросвещённый взгляд, MWCW на 3 порядка (в 1000 раз) мощнее, иньеллигентнее и удобнее, чем MSVC. Единственный нюанс, который я обнаружил - то, что библиотеки типа .LIB (advApi, KERNEL, USER etc) у него зачем-то обрезаны. Но если скопировать их из WATCOM кодогенерации Power Builder'а, то всё становится ОК. Итак, "Дайте Серому Коту звёздочку вон ту...", которая называется Передача параметров в dll-функцию на MWCW. GrayCat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 09:54 |
|
||
|
DLL, CodeWarrior
|
|||
|---|---|---|---|
|
#18+
Такое может происходить, когда функция в dll имеет неправильную конвенцию вызова, например, не stdcall, а cdecl. В этом случае могут неправильно интерпретироваться параметры и забиваться адрес возврата, после чего и имеем Invalid Stack Pointer Проверь конвенцию вызова, чтобы она была stdcall (по-моему, pascal в си, но тут я могу и ошибаться). Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 10:47 |
|
||
|
DLL, CodeWarrior
|
|||
|---|---|---|---|
|
#18+
На ВижуалСтудио у меня проходила такая декларация pbmq.CPP Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2004, 16:57 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=100&tid=1338916]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 358ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...