Название: Кроссплатформенность QNetworkInterface::allInterfaces Отправлено: posix от Январь 17, 2017, 02:43 Столкнулся с одной неприятностью, QNetworkInterface::allInterfaces отказывается работать в Windows 7-10 и macOS (проверял на 10.12), но нормально работает в Linux и Windows XP. В проблемных ОС вместо ip, netmask и broadcast отдается пустота. Вот пример:
Код: foreach (const QNetworkInterface &iface, QNetworkInterface::allInterfaces()) { А вот если перебирать QNetworkInterface::allAddresses, то все одинаково работает на всех ОС: Код: foreach (const QHostAddress &address, QNetworkInterface::allAddresses()) { Думал, может это связано с безопасностью, пробовал запускать приложение с повышенными привилегиями, но безрезультатно. Может кто сталкивался, существует ли решение этой проблемы? Название: Re: Кроссплатформенность QNetworkInterface::allInterfaces Отправлено: qate от Январь 17, 2017, 11:25 пальцем в небо: сборка программы для венды чем и разрядность ?
Название: Re: Кроссплатформенность QNetworkInterface::allInterfaces Отправлено: kambala от Январь 17, 2017, 13:06 в макос все работает, тестил на 10.11 и 10.12 недавно, Qt 5.6
Название: Re: Кроссплатформенность QNetworkInterface::allInterfaces Отправлено: posix от Январь 17, 2017, 13:41 пальцем в небо: сборка программы для венды чем и разрядность ? В винде MSVC 2015, 32, Qt 5.7.1, пробовал как стоковый с qt-project, так и свой статический, собранный следующим образом: Код: configure -static -platform win32-msvc2015 -prefix "C:\Qt\5.7\Static" -release -opensource -confirm-license -nomake examples -nomake tests -nomake tools -opengl desktop -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -openssl-linked OPENSSL_LIBS="-lgdi32 -lssleay32MT -llibeay32MT" -I C:\openssl-1.0.2j-vs2015\include -L C:\openssl-1.0.2j-vs2015\lib в макос все работает, тестил на 10.11 и 10.12 недавно, Qt 5.6 А вот с Qt 5.7.1 на 10.12 уже не работает, аналогично пробовал собирать как со стоковым, так и со своим Qt, с помощью Clang: Код: ./configure -prefix /Users/user/Qt/5.7/Static -release -opensource -confirm-license -nomake examples -nomake tests -nomake tools -qt-zlib -qt-libjpeg -static Вопрос снимается, разобрался: Код: foreach(const QNetworkInterface &iface, QNetworkInterface::allInterfaces()) { Название: Re: Кроссплатформенность QNetworkInterface::allInterfaces Отправлено: kambala от Январь 17, 2017, 16:21 на всякий случай свой код выложу (IPv6 адреса тоже собирает):
Код
P.S. нафига нужна статическая сборка в макос? Название: Re: Кроссплатформенность QNetworkInterface::allInterfaces Отправлено: posix от Январь 18, 2017, 11:27 нафига нужна статическая сборка в макос? Объективных причин нет, но мне так спокойнее. |