Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Владимир от Сентябрь 21, 2012, 13:37



Название: Segmentation fault при использовании внешней библиотеки
Отправлено: Владимир от Сентябрь 21, 2012, 13:37
Добрый день. Пытаюсь использовать функции из внешней библиотеки в цикле. Примерный код:
Код:
..........
char snam = (char) new char;

QLibrary swedll("swedll32.dll");

typedef char * (*Fct)(int, char *); Fct fct=(Fct)(swedll.resolve("_swe_get_planet_name@8"));

for(int i=0;i<100;++i) {

    if (fct) fct(i,snam);
..........
}

Если вызвать функцию без цикла все нормально отрабатывает. А вот если так как показано выше получаю Segmentation fault иногда на 11 проходе иногда раньше. В чем может быть проблема подскажите пожалуйста.


Название: Re: Segmentation fault при использовании внешней библиотеки
Отправлено: Пантер от Сентябрь 21, 2012, 13:48
char snam = (char) new char; ты же понимаешь, что это ОДИН символ?
Что функция делает с входными данными?


Название: Re: Segmentation fault при использовании внешней библиотеки
Отправлено: Владимир от Сентябрь 21, 2012, 14:28
Конечно понимаю. Функция во втором параметр возвращает первый символ строки.

Но не в этом как оказалось дело. Все дело было в том что прототип функции был указан без определения модели вызова __stdcall. После приведения кода к виду:

Код:
typedef __stdcall char * (*Fct)(int, char *); 

все заработала как надо. :)

Доволен как удав...