Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает функция, загружаемая из DLL 
:(
    Опции темы
Paradox
Дата 12.3.2003, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Имеется DLL, которую я загружаю, но одна из функций почему то не работает
Код

 long (*IsisAppNew)();
 long (*IsisSpaNew) (long);
 HINSTANCE hDLL;
 FARPROC pProc;
 long appHandle;
 long spaHandle;


 hDLL = LoadLibrary("Isis32");                           // hDLL not NULL
 pProc = GetProcAddress(hDLL,"IsisAppNew");   // pProc not NULL
 IsisAppNew = (long (*)()) pProc;
 appHandle = IsisAppNew();
 
 pProc = GetProcAddress(hDLL,"IsisSpaNew");   // pProc not NULL
 IsisSpaNew = (long (*)(long)) pProc;
 spaHandle = IsisSpaNew(appHandle);                // тут возникает ошибка !!!


На последней строчке вылазеет сообщение об ошибке, которое гласит буквально следующее:
Цитата

Run-time check failure #0 - The value of ESP was not properly saved across a function call. This is usualy a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.


Не пойму что не так с указателями функций....

В DLL прототипы функций такие :
Код

long IsisAppNew();
long IsisSpaNew(long);


Подскажите плз... smile.gif



--------------------
---
PM MAIL WWW   Вверх
pike
Дата 12.3.2003, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 4.3.2003

Репутация: нет
Всего: нет



Попробуй функции объявить как
extern "C" ...
PM MAIL   Вверх
TaTaP
Дата 13.3.2003, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 15.10.2002

Репутация: 1
Всего: 1



Также посмотри, какие указаны соглашения о вызовах - в VC++ по умолчанию стоит присваивать всем свободным функциям модификатор __cdecl, а FARPROC - это вроде __stdcall...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.