Russian Qt Forum

Qt => Общие вопросы => Тема начата: sergek от Июнь 02, 2015, 07:38



Название: [РЕШЕНО] Сборка клиентской библиотеки MQTT для Windows
Отправлено: sergek от Июнь 02, 2015, 07:38
Коллеги,
пытаюсь собрать библиотеку MQTT (https://www.eclipse.org/paho/clients/c/) средствами Qt, mingw32.
Для этого создал проект paho-mqtt3c.pro, добавил в него файлы из проекта VS 2013, содержащегося в архиве. Подключил библиотеку ws2_32.dll, которая упоминалась в этом архиве (пришлось для нее сделать библиотеку импорта libws2_32.a с помощью pexports, dlltool). На этапе сборки дает ошибку:
Код:
./release\MQTTClient.o:MQTTClient.c:(.text+0x14c9): undefined reference to `_imp__getsockopt@20'
./release\MQTTClient.o:MQTTClient.c:(.text+0x1524): undefined reference to `_imp__getsockopt@20'
./release\MQTTClient.o:MQTTClient.c:(.text+0x2435): undefined reference to `_imp__getsockopt@20'
При этом в библиотеке импорта (по крайней мере, в def-файле) этот вызов есть.
Если вместо libws2_32 подключать libwsock32, то линковщик ругается на отстутствие других вызовов:
Код:
./release\Socket.o:Socket.c:(.text+0x839): undefined reference to `_imp__WSASend@28'
./release\Socket.o:Socket.c:(.text+0x101d): undefined reference to `_imp__getaddrinfo@16'
./release\Socket.o:Socket.c:(.text+0x1077): undefined reference to `_imp__freeaddrinfo@4'
./release\Socket.o:Socket.c:(.text+0x1a3b): undefined reference to `_imp__WSAAddressToStringW@20'
В чем моя ошибка?
Вообще-то проект будет работать под Linux (там со сборкой все в порядке), а для Windows можно взять готовые библиотеки (https://projects.eclipse.org/projects/technology.paho/downloads), но хотелось бы разобраться. Спасибо.

upd: забыл вложить проект.


Название: Re: Сборка клиентской библиотеки MQTT для Windows
Отправлено: Old от Июнь 02, 2015, 07:57
Так может их обе надо подключать?
И libws_2 и libwsock?


Название: Re: Сборка клиентской библиотеки MQTT для Windows
Отправлено: sergek от Июнь 02, 2015, 09:11
Пробовал, тогда ошибка второго типа.


Название: Re: Сборка клиентской библиотеки MQTT для Windows
Отправлено: qate от Июнь 02, 2015, 12:39
обе включил и собрал, но не делал  libws2_32.a т.к. была уже в системе из состава mingw32-runtime-3.1.99-4.6.noarch


Название: Re: Сборка клиентской библиотеки MQTT для Windows
Отправлено: sergek от Июнь 02, 2015, 12:48
У меня mingw из состава Qt 5.4.1, там ее нет.. Покажите строчку из профайла, пожалуйста.


Название: Re: Сборка клиентской библиотеки MQTT для Windows
Отправлено: qate от Июнь 02, 2015, 14:05
У меня mingw из состава Qt 5.4.1, там ее нет.. Покажите строчку из профайла, пожалуйста.

#LIBS += ../build/libws2_32.a
LIBS += -lwsock32
LIBS += -lws2_32

но я не на венде собираю, а в opensuse
и проекты для windows я собираю под opensuse, мне так удобнее, проблем меньше


Название: Re: Сборка клиентской библиотеки MQTT для Windows
Отправлено: sergek от Июнь 02, 2015, 16:07
Спасибо, все собралось. И как я пропустил.. все лежит там, где и должно - Qt\Tools\mingw491_32\i686-w64-mingw32\lib.