![]() |
|
|
![]()
|
|
| loneybibi |
|
||||||
|
Любитель ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 28.5.2010 Где: Донецк (Украина) Репутация: 3 Всего: 3 |
Доброго времени суток, уважаемые!
Столкнулся с проблемой при использовании динамических библиотек на Windows. Код полностью собирается и под windows xp(4.7.0) и под linux (Qt 4.6.2). Так вот программа динамически подключает библиотеку и использует ее функцию. В linux все отлично. Но запустив приложение на windows вылетает ошибка, после чего приложение тухнет с кодом -1073741819. В режиме отладки выяснил текст ошибки: Приложение было остановлено поскольку оно получило сигнал от ОС Signal- SIGSEGV , назначение - Segmentation fault. Приложение и библиотека собраны под одним компилятором. В программе есть главное окно с QMdiArea и туда из библиотеки загружается QFrame. Именно в этот момент в виндовс вылетает ошибка. Вот так вызываю функцию из библиотеки:
Вот так декларирую открытую функцию библиотеки:
Сама функция фрейма в библиотеке:
Причем это с обеими функциями так. Что на той что на той вылетает! :( Ниже прикрепил архивчик с проектами. Это сообщение отредактировал(а) loneybibi - 19.4.2011, 11:19 Присоединённый файл ( Кол-во скачиваний: 7 )
testlib.zip 4,30 Kb-------------------- Red Hat Fedora 17 Qt 4.8.1 (x64), GCC 4.4.3, G++ 4.4.3, QtCreator 2.4.1 |
||||||
|
|||||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 2 Всего: 20 |
Добавьте проверку:
if( !fct ) { printf("error"); return; } -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| loneybibi |
|
|||
|
Любитель ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 28.5.2010 Где: Донецк (Украина) Репутация: 3 Всего: 3 |
да если добавить проверку пишет ошибку .. но почему не вкурил .. вроде все ж делаю как положено да и на линукс аналогичный код работает без нареканий . -------------------- Red Hat Fedora 17 Qt 4.8.1 (x64), GCC 4.4.3, G++ 4.4.3, QtCreator 2.4.1 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
у тебя эти функции не экспортируются, и lib.resolve должна возвращать 0. сделай в dll-ке так
Добавлено через 2 минуты и 30 секунд а вот почему они экспортируются на линуксе - загадка. не должны -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| loneybibi |
|
||||
|
Любитель ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 28.5.2010 Где: Донецк (Украина) Репутация: 3 Всего: 3 |
Спасибо за помощь так все работает! да действительно не понятно почему в линукс работает.. хотя это вроде ж стандарт описания функций С по всем книжкам .. я просто просмотрел пару книг по Qt ... Макс Шлее описывал длл функции так же.. и по идее я думаю у него все работало -------------------- Red Hat Fedora 17 Qt 4.8.1 (x64), GCC 4.4.3, G++ 4.4.3, QtCreator 2.4.1 |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
FRAMESHARED_EXPORT у тебя описан в frame_global.h
Q_DECL_EXPORT описан как __declspec( dllexport ) да, это - стандарт описания функций, но не объявления их как "экспортируемые из dll". Такого стандарта нет. Возможно линуксовский компилятор экспортирует все функции, объявленные как extern "C"... или же вообще все функции ? Не знаю. Это сообщение отредактировал(а) borisbn - 19.4.2011, 13:20 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| loneybibi |
|
|||
|
Любитель ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 28.5.2010 Где: Донецк (Украина) Репутация: 3 Всего: 3 |
спасибо за объяснение!
-------------------- Red Hat Fedora 17 Qt 4.8.1 (x64), GCC 4.4.3, G++ 4.4.3, QtCreator 2.4.1 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |