Russian Qt Forum

Qt => Вопросы новичков => Тема начата: karib от Март 17, 2011, 11:37



Название: Проблема программирования LPT с использованием inpout32.dll
Отправлено: karib от Март 17, 2011, 11:37
Уважаемые, доброго времени суток!
Прошу не пинать ногами, а помоч словом и делом ;o)))
Как-то так приключилось, что заинтересовался программированием, понадобилось управлять устройством через LPT порт. Для начала попробовал написать простенькую прогу (должна зажигать и гасить светодиод), чтобы понять как это всё работает. В программе использовал библиотеку inpout32.dl. Программа компилится без ошибок, но exe-шник не создается и в Консоли сборки выводится следующее сообщение:

Цитировать
debug/LED_LPT.o:C:\Qt\myprojects\LED_LPT-build-desktop/../LED_LPT/LED_LPT.cpp:33: undefined reference to `Out32(short, short)@8'

debug/LED_LPT.o:C:\Qt\myprojects\LED_LPT-build-desktop/../LED_LPT/LED_LPT.cpp:40: undefined reference to `Out32(short, short)@8'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug\LED_LPT.exe] Error 1

mingw32-make: *** [debug] Error 2

Програмуля писалась с использованием стандартных Qt приблуд скачанных с сайта разработчика. В файле *.pro подключил библиотеку:
Цитировать
QT       += core gui
TARGET = LED_LPT
TEMPLATE = app
SOURCES += main.cpp\
        LED_LPT.cpp
HEADERS  += LED_LPT.h
FORMS    += LED_LPT.ui

LIBS += \
   -LC:/Qt/myprojects/LED_LPT\
   -linpout32
INCLUDEPATH += C:\Qt\myprojects\LED_LPT

файлы *.lib и *.dll положил в соответствующие каталоги. Подскажите, уважаемые, что не так. Заранее спасибо.


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Пантер от Март 17, 2011, 11:40
Нужно еще прилинковать либу, где определен Out32(short, short).


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: karib от Март 17, 2011, 11:47
Нужно еще прилинковать либу, где определен Out32(short, short).

я так понял, что строками:
Цитировать
LIBS += \
   -LC:/Qt/myprojects/LED_LPT\
   -linpout32
либу я и прилинковал. или еще что-то нужно прописать?


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: karib от Март 17, 2011, 14:23
Уважаемые Гуру, а может ли такое быть, что подключаемый либ-файл (*.lib) получен в мелкософтовской студии и с Qt у него что-то не срастает?


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Пантер от Март 17, 2011, 14:27
Вполне, если собираешь при помощи MinGW.


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: karib от Март 17, 2011, 15:14
Вполне, если собираешь при помощи MinGW.

Засада, блин.
Отконвертировали Qt проект под Студию и моя прога запустилась (светодиод, правда в потр не тыкал).
Может кто подскажет, что можно использовать для управления LPT


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Пантер от Март 17, 2011, 15:17
тут почитай (http://www.prog.org.ru/topic_9537_0.html)


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: karib от Март 17, 2011, 15:28
угу, спасибо! ;o)


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: karib от Апрель 07, 2011, 10:19
Проблема решилась.
Похоже, что компилятор MinGW действительно не может работать с этой библиотекой. Все заработало после того как стал использовать компилятор от майкрософтофской студии (установил Microsoft Visual C++ 2008 Express Edition).
Всем спасибо!


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: vasilii_ru от Февраль 10, 2012, 01:09
У меня стоит таже задача: работа с LPT портом, установлена Qt с креатором под VS2008. При обращении к функцией Out32(..) библиотеки  выдает ошибку:
test_ion.obj:: error:  unresolved external symbol "void __stdcall Out32(short,short)" (?Out32@@YGXFF@Z) referenced in function "private: void __thiscall test_ion::on_StartButton_clicked(void)" (?on_StartButton_clicked@test_ion@@AAEXXZ)
Помогите пожалуйста разобраться что не так ???


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: vasilii_ru от Февраль 10, 2012, 20:58
Разобрался надо было добавить строку "#pragma comment( lib, "inpout32.lib" )", видимо строки "LIBS += -LC:\Qt\2010.05\...\inpout32.lib" в файле *.pro недостаточно


Название: Re: Проблема программирования LPT с использова
Отправлено: Edynchik от Февраль 21, 2012, 17:35
Проблема решилась.
Похоже, что компилятор MinGW действительно не может работать с этой библиотекой. Все заработало после того как стал использовать компилятор от майкрософтофской студии (установил Microsoft Visual C++ 2008 Express Edition).
Всем спасибо!
Добрый вечер!
возникла такая же проблема с этой библиотекой. Как использовать компилятор от VS 2010 в creator? т.е в инструментариях он есть, а выбрать в свойствах проета не позволяет. ???
Спасобо.


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Edynchik от Февраль 22, 2012, 09:21
у меня две...creator(первая) и vs2010 с скомпилированной библиотекой(вторая)...и в creator не могу подставить компилятор от VS...


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: QuAzI от Февраль 22, 2012, 10:32
А выложите кто-нить эту библу, аж интересно стало, что там не линкуется.


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Edynchik от Февраль 22, 2012, 10:52
1) Creator - это не Qt. Это инструмент, собранный с помощью Qt.
2) Инструменты -> Параметры -> Сборка и запуск -> Профили Qt -> Добавить -> Ткнуть в qmake, скомпилированный в VS 2010. Теперь на текущем проекте идём в "Проекты"  и меняем профиль на Qt для VS 2010.
Спасибо,так и вышло...компилятор подставился, но библиотека так и не скомпилировалась...но библиотека почему то не линкуется,можете посмотреть что я делаю не так?


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: QuAzI от Февраль 22, 2012, 11:26
А через QLibrary не прокатит? И не приходится за уши тащить MS VS


Название: Re: Проблема программирования LPT с использова
Отправлено: Edynchik от Февраль 22, 2012, 14:20
А через QLibrary не прокатит? И не приходится за уши тащить MS VS
не прокатило, по крайней мере функции не выполняются...может есть другой способ?
Собственно сейчас весь ворос как подклюить эту библиотеку к проекту?


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: QuAzI от Февраль 22, 2012, 14:31
Как проверял? Я как-то так хук на dll вешал и вполне работало


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Edynchik от Февраль 22, 2012, 16:00
Как проверял? Я как-то так хук на dll вешал и вполне работало
да подключил осцил и глядел...ну и к тому же после вызова Out32 происходил segmentation fault...


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: QuAzI от Февраль 22, 2012, 16:02
Странно, у меня не сегфолтило, хотя я и не вешал на порт ничего реального.


Название: Re: Проблема программирования LPT с использованием inpout32.dll
Отправлено: Edynchik от Февраль 22, 2012, 16:14
сам даже не знаю в чем дело,казалось бы выставляю в 1 все ноги(т.е. Out32(888,255))...