Solved The procedure entry point cound not be located in the dynamic link library
-
I use Qt in VS 2017. I try to run simple example, but I got this error:
what is this ?
-
Please provide some code / a minimal example to reproduce this problem.
-
tis is my .h file:
class FortuneThread :public QThread
{
Q_OBJECTprivate:
QString hostName;
quint16 port;
QMutex mutex;
QWaitCondition cond;
bool quit;
public:
FortuneThread(QObject *parent = 0);
~FortuneThread();void requestNewFortune(const QString &hostName, qint16 port); void run() override;
signals:
void newFortune(const QString &fortune);
void error(int socketError, const QString &message);
};and this is my .cpp file:
#include <QtCore>
#include <QtNetwork>#include "FortuneThread.h"
using namespace Qt;
FortuneThread::FortuneThread(QObject *parent): QThread(parent), quit(false)
{
}FortuneThread::~FortuneThread()
{
mutex.lock();
quit = true;
cond.wakeOne();
mutex.unlock();
wait();
}void FortuneThread::requestNewFortune(const QString &hostName, qint16 port)
{
QMutexLocker locker(&mutex);
this->hostName = hostName;
this->port = port;
if (!isRunning())
start();
else
cond.wakeOne();
}void FortuneThread::run()
{
mutex.lock();
QString serverName = hostName;
qint16 serverPort = port;
mutex.unlock();while (!quit) { const int Timeout = 5 * 1000; QTcpSocket socket; socket.connectToHost(serverName, serverPort); if (!socket.waitForConnected(Timeout)) { emit error(socket.error(), socket.errorString()); return; } QDataStream in(&socket); in.setVersion(QDataStream::Qt_4_0); QString fortune; do { if (!socket.waitForReadyRead(Timeout)) { emit error(socket.error(), socket.errorString()); return; } in.startTransaction(); in >> fortune; } while (!in.commitTransaction()); mutex.lock(); emit newFortune(fortune); cond.wait(&mutex); serverName = hostName; serverPort = port; mutex.unlock(); }
}
you know, when I define QMutex or QmutexLocker, I get this error ??
-
This is no minimal example - please try to simply use QMutex in main() to see if it happens there too.
-
problem solved. it needs some .dll file