Russian Qt Forum

Qt => Общие вопросы => Тема начата: akaMDA от Март 06, 2013, 15:44



Название: Передача QScriptEngine в качестве параметра в функцию DLL
Отправлено: akaMDA от Март 06, 2013, 15:44
QT 5. Windows 7 x64. msvc2010.
Имеется dll с экспортированной функцией
Код:
void f(QScriptEngine* _a)
в которой происходит обращение к параметру _a и приложение обваливается. В чем  проблема?


Название: Re: Передача QScriptEngine в качестве параметра в функцию DLL
Отправлено: akaMDA от Март 06, 2013, 15:52
Эффект наблюдается когда dll в релизе или в релизе, а приложение - в дебаге. Когда приложение в релизе - все отрабатывает


Название: Re: Передача QScriptEngine в качестве параметра в функцию DLL
Отправлено: RedDog от Март 06, 2013, 16:51
Не совпадают таблицы вызова у длл и приложения. И вообще дурной тон передавать сложные объекты через границы процессов,  будут разные версии Qt или компилятора для длл и приложения - тоже будет сыпаться.


Название: Re: Передача QScriptEngine в качестве параметра в функцию DLL
Отправлено: Igors от Март 06, 2013, 17:43
Эффект наблюдается когда dll в релизе или в релизе, а приложение - в дебаге. Когда приложение в релизе - все отрабатывает
На MSVC этот эффект наступает практически для любых классов, напр std::vector. Все должно быть откомпилировано однообразно


Название: Re: Передача QScriptEngine в качестве параметра в функцию DLL
Отправлено: lesav от Март 06, 2013, 18:12
Эффект наблюдается когда dll в релизе или в релизе, а приложение - в дебаге. Когда приложение в релизе - все отрабатывает
Боюсь показаться Капитаном Очевидность, но я продолжу мысль:
Еще этот эффект наблюдается если приложение в релизе а dll в дебаге. Если всё в дебаге - все отрабатывает