Название: Не работает ftd2xx.dll в релиз версии Отправлено: Antonich от Октябрь 05, 2010, 21:04 Написал простенькую программку для обмена с устройством. Для связи используется USB мост FT232RL.
К нему идет ftd2xx.dll. Проблемма в том что под дебагом все работает обмены идут. А когда компилирую в релиз версию, то получаю ошибку segmentation fault. И выходит дамп ассемблера. Вопрос что можно предпринять? Подключение DLL, самое начало. Там функций много. Код:
.pro файл Код: QT += core gui Вызов функции на подключение устройства Код: void MainWindow::on_pushSensOn_clicked() Тело вызываемой функции Код: char FtdiDrv::ConnectFtdi(QWidget * pntWiget) Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: Mikhail от Октябрь 05, 2010, 21:32 А какой Qt используешь при релиз сборке программы.
Дебажную или релизную. Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: Antonich от Октябрь 06, 2010, 06:34 QT 4.7.0 Скачал вместе c Creator все далаю в нем. в свойствах проекта переключаю с дебаг в релиз. Компилирую появляются файлы в папке release проекта. К ним подсовываю qtgui4.dll qtcore4.dl minigw.dll и еще какую то либовую он при запуске ее просит. В туже папку кидаю ftd2xx.dll при нажатии на кнопку подключить когда вызывается метод FtDev -> Connect() валится в Segmetation fault. Если в дебаг версию прокинуть Qtgui4d.dll и т.д. дебажные dll то все работает.
Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: Mikhail от Октябрь 06, 2010, 07:52 Если подсовываешь dll, то значит, в путях не все прописано, либ прописано что то не то, может другая версия Qt.
Посмотри пути. Попробуй убрать из путей Qt и из переменных среды QTDIR. Да Проверь в creatore для этого проекта параметры Qt. Если запускаешь из Creatora. Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: deaks от Октябрь 06, 2010, 10:12 а лучше переустановите qt строго по инструкции) по-моему многие забывают про системные переменные
Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: Antonich от Октябрь 06, 2010, 14:52 Какие конкретно параметры? В каком меню?
Если подсовываешь dll, то значит, в путях не все прописано, либ прописано что то не то, может другая версия Qt. Посмотри пути. Попробуй убрать из путей Qt и из переменных среды QTDIR. Да Проверь в creatore для этого проекта параметры Qt. Если запускаешь из Creatora. Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: Antonich от Октябрь 06, 2010, 14:54 Ставил из инстальника с сайта qt.nokia.com
Все что в визарде предлагалось все сделал. а лучше переустановите qt строго по инструкции) по-моему многие забывают про системные переменные Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: xokc от Октябрь 06, 2010, 16:40 Было подобное с чужой DLL, откомпилированной в MSVC когда ее подключал к своей программе на... MSVC. Всё дело было в неправильно указанном соглашении о вызовах в описании импортируемой из DLL функции (stdcall вместо cdelc или наоборот - не помню). Причем под debug все работало, а вот в release - нет. Самое смешное, что под mingw все работало хорошо и так и эдак.
Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: crossly от Октябрь 06, 2010, 16:46 потому что плюшек вроде cdelc в gcc нету...
Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: erinyes от Май 23, 2012, 17:15 Здравствуйте. Столкнулся с такой же проблемой с этой библиотекой. Код другой, но суть та же: релиз версия падает, с дебаг все нормально (падает, причем, на последующем вызове new для валидатора, а не на самом вызове функции из библиотеки, не знаю важно ли это).
Мне кажется, проблема в чем-то вроде этого ответа. Было подобное с чужой DLL, откомпилированной в MSVC когда ее подключал к своей программе на... MSVC. Всё дело было в неправильно указанном соглашении о вызовах в описании импортируемой из DLL функции (stdcall вместо cdelc или наоборот - не помню). Причем под debug все работало, а вот в release - нет. Самое смешное, что под mingw все работало хорошо и так и эдак. Можно ли как-нибудь это исправить? И, если можно, поподробнее объяснить в чем засада? Да, компилятор mingw как раз. Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: Странник от Май 24, 2012, 00:54 у меня кстати тоже аномалия какая-то проявилась. использую mingw, и в релизе, и в дебаге одна и та же история. при наличии отладочных выводов qDebug() все прекрасно работает, стоит закомментировать хоть один - падает с ошибкой сегментации.
Название: Re: Не работает ftd2xx.dll в релиз версии Отправлено: erinyes от Май 24, 2012, 11:19 В общем, как я и предполагал проблема оказалась в руках :)
Дело в том, что при объявлении функций в хедере библиотеки используется макрос WINAPI. Увидев нечто вроде #define WINAPI FAR PASCAL я подумал "wtf?" и опустил это дело при определении указателей на функции, хотя подозрение было что не заработает. Погуглив, сегодня по поводу этого WINAPI, добавил __stdcall в описание и все заработало. Смутило опять же то, что в дебаге все было нормально. |