Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 22:37

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



QT Form in WIN32 DLL

Discussion on QT Form in WIN32 DLL within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
QT Form in WIN32 DLL

hallo,

weiß wer wie ich die QT form richtig in einer win32 .dll aufrufe?
QT ist bereits eingebunden etc. ich erstelle ein thread in der dll main und rufe im thread Dialog.show() auf, leider hängt sich das Spiel auf (art endlos loop).

ich glaube es liegt daran, das ich 'ne eigene "Prozessschleife" für die gui erstellen muss?

weiß wer rat wie man das richtig angeht?
BrendonHomo is offline  
Old 10/13/2013, 01:47   #2
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Du musst für die UI einen eigenen Thread erstellen, entweder über _beginthread(ex), über boost::thread, std::thread, ...
Muss halt parallel zur Hauptschleife ablaufen

Padmak
Padmak is offline  
Old 10/13/2013, 10:13   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Er erstellt schon einen Thread.
MrSm!th is offline  
Old 10/13/2013, 10:41   #4
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
In welchem Thread wird app.exec() gecalled?
Schlüsselbein is offline  
Old 10/13/2013, 11:06   #5
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
vorhin mit std::thread gab es eine Art endlosschleife (nach aufruf der .detach() Funktion), nun habe ich es auf CreateThread umgeschrieben, allerdings wird mir Prozess direkt terminiert sobald ich die .dll in den Prozess jage.

Code:
DWORD WINAPI ShowDialog(LPVOID lpvReserved)
{
	FormMain form;
	form.show();
	return QApplication::exec();
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
	if(fdwReason == DLL_PROCESS_ATTACH)
	{
		HANDLE hThread = CreateThread(NULL, 0, &ShowDialog, NULL, 0, 0);
		CloseHandle(hThread);
	}

	return TRUE;
}
BrendonHomo is offline  
Old 10/13/2013, 12:38   #6
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Nimm olly oder n anderem Debugger und schau nach an welchem Punkt deine Anwendung crasht.

Btw: Die Qt dlls befinden sich im gleichen Ordner?
Schlüsselbein is offline  
Old 10/13/2013, 12:40   #7
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
nimm _beginthread und net createthread.
Dr. Coxxy is offline  
Old 10/13/2013, 12:52   #8
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Bzw _beginthreadex, bei welchem die Signatur afaik identisch ist.
Schlüsselbein is offline  
Old 10/13/2013, 13:20   #9
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
Quote:
Originally Posted by Schlüsselbein View Post
Nimm olly oder n anderem Debugger und schau nach an welchem Punkt deine Anwendung crasht.

Btw: Die Qt dlls befinden sich im gleichen Ordner?
die dlls befinden sich natürlich im gleichen ordner.
ich habe es mir gerade mal in olly angeschaut, scheinbar wird mir eine exception geworfen:

"QWidget: Must construct a QApplication before a QPaintDevice"

habe mal etwas gegoogled, allerdings keine funktionierende lösung gefunden.

Quote:
Originally Posted by Dr. Coxxy View Post
nimm _beginthread und net createthread.
Quote:
Originally Posted by Schlüsselbein View Post
Bzw _beginthreadex, bei welchem die Signatur afaik identisch ist.
_beginthreadex selbiges Problem :|


meine FormMain klasse:

.cpp


.h

Ahja, mir fehlt im Header in der Klasse FormMain das makro Q_OBJECT damit ich Signale / Slots verwenden kann, allerdings kriege ich dort 3 linker error:

Quote:
1>FormMain.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual int __thiscall FormMain::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@FormMain@@UAEHW4Call@QMetaObject@@HP APAX@Z)".
1>FormMain.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void * __thiscall FormMain::qt_metacast(char const *)" (?qt_metacast@FormMain@@UAEPAXPBD@Z)".
1>FormMain.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct QMetaObject const * __thiscall FormMain::metaObject(void)const " (?metaObject@FormMain@@UBEPBUQMetaObject@@XZ)".
weiß jemand evtl wie ich das auch behoben bekomme? bei mir läuft qt mit dem vs plugin in vs 2012.
das projekt bereinigen und neu kompilieren klappt da auch nicht.
bei einer normalen qt Anwendung meckert er nicht.
BrendonHomo is offline  
Old 10/13/2013, 13:38   #10
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Der Fehler ist doch recht eindeutig?! Erstellt halt mal als erstes ein QApplication Objekt und rufe dann exec von diesem auf nachdem du deine Widgets erstellt hast.
Schlüsselbein is offline  
Thanks
1 User
Old 10/13/2013, 13:44   #11
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
Quote:
Originally Posted by Schlüsselbein View Post
Der Fehler ist doch recht eindeutig?! Erstellt halt mal als erstes ein QApplication Objekt und rufe dann exec von diesem auf nachdem du deine Widgets erstellt hast.
du hast recht, jetzt klappt alles einwandfrei. danke!
davor habe ich es bereits mit einem selbst erstellten QApplication obj versucht, allerdings schmierte der Client wieder ab, wovon ich ausging das es das alte Problem war.
habe es mir gerade nochmal im Debugger dann angesehen und er schmiss mir diesmal doch eine andere exception :

"Failed to load platform plugin "windows"."

nachdem ich jetzt noch die libEGL.dll in den Ordner kopiert habe funktioniert es einwandfrei.

jetzt währe noch die frage wie ich die moc linker Errors behebe, laut Google soll ich das projekt einfach bereinigen und neu erstellen, was bei mir aber das Problem nicht behoben hat.


Problem solved, die moc.cpp vergessen hinzuzufügen. kann ngeschlossen werden.
BrendonHomo is offline  
Reply


Similar Threads Similar Threads
Win32
01/18/2012 - Off Topic - 6 Replies
Hallo leute, Habe eine frage,ich habe einen Win32 Pc (nicht grade gut :() und wollte wissen ob man irgendwie oder irgendwas runterladen kann damit mein Pc anstat Win32,Win64 werden kann ? Danke im vorraus :)
C++ Win32 Frage
01/08/2012 - C/C++ - 2 Replies
Hi evps, Ich wollte von visual basic auf visual C++ umsteigen.Als ich jetzt ein Win32 Projekt erstellen wollte,hat sich ein neues Tab bei meinem Browser geöffnet (Bei den Tut's auf youtube öffnet sich nicht der Browser sondern ein Fenster dafür). Das Problem bei mir ist jetzt dass es beim Browser keine Reaktionen gibt wenn ich auf 'Fertig stellen' drücke.Weiß jemand dafür eine Lösung? Ich hoffe ihr könnt mir helfen :) mfg spion9613
Bots für Win32?
11/15/2011 - AutoIt - 3 Replies
Hey Epvp, ich erstelle einpaar mal im monat bots. Wenn ich die aber verschicke dann steht da meistens: etwas mit 32bit anwendung. Ich habe Win64! wieso funken die bots nicht auf 32bit pcs? wie kann ich bot für64- und 32bit erstellen? MfG xNeoNStyLeZz
Druid Cat Form -> FireLands Cat Form
08/01/2011 - World of Warcraft - 2 Replies
Hallo Leute, hat jemand die Möglichkeiten mir eine Tauren Katze zur Firelands Katze zu swappen - sofern dies in 4.2 FIRELANDS noch möglich ist. Wobei die Vergangenheit uns gelehrt hat, das es immer Mittel und Wege gibt. (: http://manaflask.com/images/galleries/scaled_1307 971939_flamecat.jpg LG Windkirsche
Von Form Zu Form Wechseln.
04/14/2011 - AutoIt - 2 Replies
Hallo Erstmal! Ich wollte mal etwas machen das von einer form zur anderen wechselt jetzt wollt ich das aber auch so machen das wenn man auf einen zurück button klickt es wieder zur ersten form kommt und dann alles neu einstellen kann. also bis zu dem zurück und neu einstellen hab ich geschafft aber wenn man dann wieder auf weiter klickt passiert nix ... Könntet ihr mir helfen? Hier ist ein beispiel script #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include...



All times are GMT +2. The time now is 22:37.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.