View previous topic :: View next topic |
Author |
Message |
jason001
Joined: 18 Jul 2018 Posts: 16 Location: China
|
Posted: Fri Jul 27, 2018 2:57 am Post subject: problem about setting-up-miniupnpc-with-qt |
|
|
Dear Mr. Bernard,
Bonjour!
I am trying to set up miniupnpc with qt, following http://mayaposch.wordpress.com/2011/09/18/setting-up-miniupnpc-with-qt/, as you mentioned in a previous topic.
I am using Qt5.8.0 (qt-opensource-windows-x86-mingw530-5.8.0), in win7 x64.
I have downloaded miniupnpc-1.9.20150917.tar.gz and upnpc-exe-win32-20150918.zip,and extracted them to C:\miniupnpctest\miniupnpc-1.9.20150917 and C:\miniupnpctest\upnpc-exe-win32-20150918.
I put the below in the qt main.cpp,
Code: |
#include <miniupnpc.h>
|
Code: |
const char * multicastif = 0;
const char * minissdpdpath = 0;
struct UPNPDev * devlist = 0;
unsigned char ttl = 0;
int error = 0;
devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, ttl, &error);
|
In the qt *.pro,
Code: |
INCLUDEPATH += C:\miniupnpctest\miniupnpc-1.9.20150917
LIBS += C:\miniupnpctest\upnpc-exe-win32-20150918\libminiupnpc.a
LIBS += -liphlpapi
|
and result in error:
Code: |
error: undefined reference to `_imp__upnpDiscover'
|
It seems that the link to *.a was wrong.
How could I fix this problem?
(I also took a try to copy libminiupnpc.a to C:\Qt\Qt5.8.0\5.8\mingw53_32\lib or C:\Qt\Qt5.8.0\Tools\mingw530_32\lib, and change *.pro to be LIBS += -lminiupnpc, but it result in the same error.)
Thank you!
Yours sincerely,
Jason |
|
Back to top |
|
|
jason001
Joined: 18 Jul 2018 Posts: 16 Location: China
|
Posted: Fri Jul 27, 2018 7:18 am Post subject: more |
|
|
I have set up qt creator 2.1.0, qt 4.7.4 in C:\Qt, in winxp, and set ENV. PATH to be C:\Qt\qtcreator-2.1.0\mingw\bin. and make all above work well.
I have compiled miniupnpc-1.6 succesfully in c:\miniupnpc-1.6, by using mingw32make.bat, with the mingw mentioned above.
I put the code in the qt main.cpp
Code: |
#include "dialog.h"
#include <QApplication>
#include <QDebug>
#include <miniupnpc.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
const char * multicastif = 0;
const char * minissdpdpath = 0;
struct UPNPDev * devlist = 0;
int error = 0;
devlist = upnpDiscover(2000, multicastif, minissdpdpath, 0, 0, &error);
if (devlist)
{
qDebug() << "devlist true!" << endl;
struct UPNPDev * dev;
dev = devlist;
while (dev)
{
if (strstr (dev->st, "InternetGatewayDevice"))
break;
dev = dev->pNext;
}
if (!dev)
dev = devlist; /* defaulting to first device */
qDebug("UPnP device :\n"
" desc: %s\n st: %s\n",
dev->descURL, dev->st);
}
else
{
qDebug() << "devlist false!" << endl;
}
return a.exec();
}
|
In the test1.pro:
Code: |
QT += core gui
TARGET = test1
TEMPLATE = app
INCLUDEPATH += C:\miniupnpc-1.6\
LIBS += C:\miniupnpc-1.6\libminiupnpc.a
LIBS += -liphlpapi
SOURCES += main.cpp\
dialog.cpp
HEADERS += dialog.h
|
But it still result in:
Code: |
error:undefined reference to `_imp__upnpDiscover'
|
and I copied "libminiupnpc.a" to C:\Qt\qtcreator-2.1.0\mingw\lib, and change the *.pro to be
Code: |
INCLUDEPATH += C:\miniupnpc-1.6\
LIBS += -lminiupnpc
LIBS += -liphlpapi
|
and result in the same error.
This is quite strange, could anyone help me?
Thank you very much! |
|
Back to top |
|
|
jason001
Joined: 18 Jul 2018 Posts: 16 Location: China
|
Posted: Tue Jul 31, 2018 6:45 am Post subject: success |
|
|
work well in winxp, win7 and linux, with different version of qt.
just code:
Code: |
DEFINES += STATICLIB
INCLUDEPATH += F:\vmshare\miniupnpc-1.6-success
LIBS += F:\vmshare\miniupnpc-1.6-success\libminiupnpc.a
LIBS += -liphlpapi
LIBS += -lws2_32
|
|
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1593
|
Posted: Fri Aug 03, 2018 12:46 am Post subject: |
|
|
just define MINIUPNP_STATICLIB if you link against the static library _________________ Main miniUPnP author.
https://miniupnp.tuxfamily.org/ |
|
Back to top |
|
|
miniupnp Site Admin
Joined: 14 Apr 2007 Posts: 1593
|
|
Back to top |
|
|
jason001
Joined: 18 Jul 2018 Posts: 16 Location: China
|
Posted: Sat Aug 04, 2018 10:40 am Post subject: Thanks for reply! |
|
|
Thanks for your replies!
Have a good weekend! |
|
Back to top |
|
|
jason001
Joined: 18 Jul 2018 Posts: 16 Location: China
|
Posted: Tue Aug 07, 2018 3:33 am Post subject: |
|
|
DEFINES += STATICLIB help my simple test qt project compiled successfully and work well, but it didn't work with my complicated qt project, meeting problems like "miniupnpc.c:-1: error: undefined reference to `in6addr_any'.
Thanks to your replies, I took a try to define MINIUPNP_STATICLIB, and It works very well.
I don't know why it work well, hope I can find it out someday.
Thank you again! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
© 2007 Thomas Bernard, author of MiniUPNP.
|