Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > dll |
Автор: chaos 18.3.2005, 10:01 | ||||
Постоянно выскакивают ошибки вот текст длл
а вот сама программа
народ подскажите в чем тут дело |
Автор: NiJazz 18.3.2005, 10:21 |
chaos Чтобы узнать, на какой строке вылетает, сделай отладку. |
Автор: chaos 18.3.2005, 11:06 |
я думаю что проблема в передаче параметров те в последовательности stdcall... |
Автор: kometa_triatlon 5.5.2005, 14:29 | ||
Блин, та же ошибка ![]() Если конкретнее: "Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention." Появилась она когда заменил typedef void (WINAPI* cfunc)(); на typedef void (WINAPI* cfunc)(int, int, int); Причем выскакивает как раз перед FreeLibrary. ??? Да, и еще.
То есть в диалоговом окне выбираю параметры, затем передаю в функцию. m_iEntrNum и m_iExitNum - тип DWORD, m_sliderRarity - slider control Если в СreateLabirint передать константы, например СreateLabirint(5,5,4); то работает нормально (то есть выскакивает только одна ошибка =) ), а если так, как здесь сделано, то получается пугающий Abort. ![]() Интересно, почему? Какая разница? |
Автор: Nastya 5.5.2005, 15:07 |
Пройдись в самой функции по отладке. Возможно гд-то внутри была некорректная работа с памятью и нарушился стек или что-то еще |
Автор: Fantasist 7.5.2005, 19:18 | ||||
А вы в курсе, что extern "C" - это cdecl, а WINAPI - это stdcall? kometa_triatlon покажи,, как ты функцию CreateLabirint объявляешь в dll. |
Автор: kometa_triatlon 8.5.2005, 00:38 | ||||
Чтобы мало не показалось ![]() В dll есть мой класс CLabirint, работаю с ним. |
Автор: Fantasist 9.5.2005, 21:21 | ||||||
kometa_triatlon. Эх-эх.... Еще раз:
extern "C" - это cdecl (по умолчанию). WINAPI - это stdcall. Вот это вот сообщение:
прямым текстом указывает в чем проблема. |
Автор: kometa_triatlon 10.5.2005, 17:07 |
Вау. А что такое? cdecl, stdcall? ![]() ![]() Ну а как же избавиться от проблемы? Что изменить? |
Автор: Fantasist 10.5.2005, 17:49 | ||||||||
Реккомендуется посмотреть хелп. Зачем мне в него лезть и копировать сюда?
Поменяй либо объявление в dll на такое:
(здесь могут возникнуть проблемы с декорацией имен и тогда нужен будет .DEF файл) либо в ехе:
|
Автор: kometa_triatlon 10.5.2005, 21:39 |
Fantasist![]() Спасибо |