Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

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:
    5ab93106-2c8f-45d5-a0db-fe89f61497d9-image.png

    what is this ?


  • Lifetime Qt Champion

    Please provide some code / a minimal example to reproduce this problem.



  • tis is my .h file:
    class FortuneThread :public QThread
    {
    Q_OBJECT

    private:
    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 ??


  • Lifetime Qt Champion

    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


Log in to reply