class thread : public QThread { Worker * worker; public: void init() { worker = new Worker; } void start() { worker->moveToThread(this); QThread::start(); } void run() { exec(); }};class Worker : public QObject { someMember; someMember2; someMember3; typedef dllFoo * dllFooProto; QLibrary dll;public: Worker() { dll.load(); dllFoo = (dllFooProto)dll.resolve("dllFoo");}public slots: void foo() { while(1) { QCoreApplication::processEvents(); if(isExit) return;//Внешнее событие устанавливает флаг для выхода из цикла Sleep(1000); dllFoo(someMember, &someMember2, &someMember3);//Ф-я модифицирует содержимое someMember2 и someMember3 } }};
void ReaderCOM::pollReader() { QLibrary dll2("Mr915ApiV10"); dll2.load(); if(!(gen2MultiTagIdentify = (APIGen2MultiTagIdentify)dll2.resolve("Gen2MultiTagIdentify"))) qDebug() << "Gen2MultiTagIdentify"; if(!(clearIDBuffer = (APIClearIDBuffer)dll2.resolve("ClearIDBuffer"))) qDebug() << "ClearIDBuffer"; while(1) { qDebug() << "Gen2MultiTagIdentify:" << QString::number((int)gen2MultiTagIdentify, 16);//Вот тут вылет на 3-й итерации clearIDBuffer(hReader, readerAddr); gen2MultiTagIdentify(hReader, &count, tags, readerAddr); }}
Gen2MultiTagIdentify: "1b621b50" Gen2MultiTagIdentify: "1b621b50" Gen2MultiTagIdentify: "?"
QTextStream &QTextStream::operator<<(const QString &string){ Q_D(QTextStream); CHECK_VALID_STREAM(*this);//Вот тут d->putString(string); return *this;}
А когда происходит соединение со слотом void foo()? Может надо точно указать тип соединения?