私の質問を見る人は皆良い日です。 私はdllを持っています。これはC++とGUI QTプロジェクトで書かれています。呼び出されたときにDLL関数は、このサイクル中のパケットを送信します。私は、「送信」関数を呼び出すときC++ dllとQT GUIの間の通信
for (int offset = 0; offset < filelen; offset += 4)
{
for (int i = 0; i < 4 ; i++)
{
FPGA_Packet.DATA[i] = (program_data[i + offset];
}
if (SOCKET_ERROR == (send(mysocket, (char*)&FPGA_Packet, 8, 0)))
{
error = WSAGetLastError();
return error;
}
}
問題は、私はオフセットでプログレスバーたびにインクリメントする必要があること、です。質問は - どのようにGUIとDLLの間の接続を確立できますか?私はスロットと信号を使用する必要がありますか、または私はそれを "接続"スレッド関数で解決することができますか、またはより簡単なオプションがありますか? DLLにフォーム上のポインタを渡す必要がありますか、何とかget/setを使用しますか?私はアドバイス、リンク、例、その他のすべての助けをappretiateします。ありがとうございました。
Q_OBJECTをdll内に追加する必要がありますか?私は非QTのDLLを作成する必要があります、私はQtのモジュールが含まれないようにしようとしています。それとも、GUIプログラム内のQObject宣言がスロット信号を使用するのに十分でしょうか? –
内部にQ_Objectマクロを持つdllラッパーを作成できます。この宣言なしでシグナルスロットメカニズムを使用する機会はありません – Dmitry
ああ...私はちょうど私のDLLにQTサポートを追加する必要がありますね。それを避けようとしましたが、もし他のオプションがなければ、私はそれをしなくてはなりません。助けてくれてありがとう –