im netz finde ich nur wirrwarr, und hier waren's ganze zwei threads, deren lösungen bei mir aber nicht zutreffen.
und nach mehreren stunden gesuche, gegoogle und gebastel muss ich euch mal wieder bitten, mir beim knoten-lösen zu helfen
also:
ich habe einen thread
Code: Alles auswählen
Engine::Engine()
{
socket_out = new QUdpSocket(this);
socket_out->open(QIODevice::ReadWrite);
}
void Engine::run()
{
while (1)
{
if (input_vorhanden())
input_parsen();
usleep(1);
}
}
den socket anstelle vom konstruktor in run() zu erzeugen hilft auch nicht.
im laufe von input_parsen() wird dann ggf. folgende funktion aufgerufen:
Code: Alles auswählen
void udp_Send(u08 ip_num, u16 dstPort, u16 len, u08* data)
{
QHostAddress host;
host.setAddress("192.168.0." + QVariant(ip_num).toString());
socket_out->open(QIODevice::ReadWrite);
[quote]socket_out->writeDatagram((char*)data, len, host, dstPort);[/quote]
}
Code: Alles auswählen
Cannot mix incompatible Qt libraries
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
, dann läuft alles rund!socket_out->writeDatagram((char*)data, len, host, dstPort);
ich habe allerdings nur ein einziges Qt installiert, keine updates gezogen, und im PATH habe ich nachgeschaut, da ist von Qt keine spur!?
im "projekt" (links, 5ter knopf von oben, under "debuggen") steht bei qt-versions-verwaltung nur die benutzerdefinierte drin, bei "Qt aus PATH" steht <nicht gefunden>.
ist da was grundlegend faul, und ich hab' die ganze zeit nur glück gehabt?!
zerschießt mir der socket den thread?
was ist das mit der parameterübergabe an C?
ist das casten nach char* doof?
sollte ich den socket lieber als member von Engine haben? (dann muss ich an anderen stellen neue einbauen...)
ich halte jetzt mal meinen kopf in den froster
danke schonmal!!