Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 11:32

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

Advertisement



Erstellen einer DLL in VS2012 mit Qt

Discussion on Erstellen einer DLL in VS2012 mit Qt within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Erstellen einer DLL in VS2012 mit Qt

Hey,
hab jetzt schon alles versucht was mir Google, bei meinen googlen-Künsten ausspuckte, aber irgendwie komme ich einfach nicht genau dahinter wie ich nun eine DLL erstelle die ganz normal wie meine .exe eine GUI erscheinen lässt.

Nach meinem letzten Versuch einfach alles in einer normalen VS erstellten DLL Projekt zu includen und zu benutzen und natürlich fehlschlug frag ich mal hier.

_
Wie erstelle ich jetzt genau eine DLL in VS2012, so das ich Qt vollkommen nutzen kann?

Mfg. ~Wystan

Ps: War mir nich sicher ob ich das nun hier oder im C++ Bereich posten sollte, aber hier sollte es hoffentlich auch hinpassen. :b
Doktor. is offline  
Old 01/01/2014, 16:30   #2
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Niemand eine Ahnung?
Doktor. is offline  
Old 01/02/2014, 12:45   #3
 
MrDami123's Avatar
 
elite*gold: 56
Join Date: Oct 2010
Posts: 3,409
Received Thanks: 1,219
Laut meinen hier vorliegenden C# Buch, kann man mit dem Visual Studio sogenannte "Windows-Steuerelemente" erstellen.
Quote:
Das Ergebnis der Kompelierung ist wie bei der Klassenbibliothek eine DLL-Datei. Im Gegensatz zu einer Klassenbibliothek hat ein Steuerelement jedoch eine visuelle Oberfläche.
Vielleicht hilft dir das weiter.
MrDami123 is offline  
Old 01/03/2014, 00:49   #4
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Danke, aber ich wollte Qt in einer Dll benutzen können und nicht die "Windows-Steuerelemente", dennoch danke.
Doktor. is offline  
Old 01/03/2014, 13:10   #5
 
tolio's Avatar
 
elite*gold: 2932
The Black Market: 169/1/0
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
hab noch nie was mit cpp in diesem kontext zutun gehabt, warum nicht ca so: binde alle benötigten sachen irgendwo in der ddl ein und dann erstellste halt die form und zeigst sie an. Sollte eigendlich in den meisten sprachen und frameworks so klappen.

pseudocode:
void main()
{
form frm = new form();
frm.size = xy;
frm.show();
}
tolio is offline  
Old 01/03/2014, 13:44   #6

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
^das Problem scheint nicht die Verwendung sondern eher die Implementierung der Bibliotheken zu sein.

@TE: Die Files hast du hier: für VS12 geladen? Und das Plugin für VS12?
Was ist denn fehlgeschlagen bei deinem ersten Versuch? Evtl. war es ja was triviales..
snow is offline  
Old 01/04/2014, 05:26   #7
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Code:
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
        QWidget *w = new QWidget;
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		DisableThreadLibraryCalls(hModule);
                w->setGeometry(100,100,100,100);
                w->show();
		break;
	}
	return TRUE;
}
Ganz normal halt, alles incuded etc. aber wenn ich die dll injecte kommt kein Fenster.
Bei anderen Versuchen ist sogar der ganze Client geschlossen wurden.

Hab im Web dann noch etwas von QApplication gelesen, die auch bei einer normalen .exe ausgeführt wird, also versuchte ich dies in der dll.
Code:
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
        QApplication app;
        QWidget *w = new QWidget;
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		DisableThreadLibraryCalls(hModule);
                w->setGeometry(100,100,100,100);
                w->show();
		break;
	}
	return app.exec();
}
kommt aber zum Fehler, da die Parameter fehlen, in einem .exe Projekt wäre ja die main mit den Parameter argc und argv, die aber in der dll nicht existieren, bzw. einfaches hinzufügen von argv und argc funktionierten nicht.

Hier nochmal wie es normal in einer main aussieht:
Code:
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QWidget w;
	w.show();
	return a.exec();
}
Doktor. is offline  
Old 01/04/2014, 06:14   #8

 
snow's Avatar
 
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
Ah, so meinst du das.
Versuch mal, das ganze so aufzubauen:

Code:
DWORD WINAPI QTThread(LPVOID param)
{
	QApplication app(__argc, __argv);
	QWidget w;
	w.setGeometry(100, 100, 100, 100);
	w.show();

	return app.exec();
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
		CreateThread(nullptr, 0, QTThread, nullptr, 0, nullptr);
		DisableThreadLibraryCalls(hModule);
		break;
	}
	return TRUE;
}
__argc und __argv sind von VS bereitgestellt, ansonsten gibt es noch die WinAPI Funktion CommandLineToArgvW, die funktioniert allerdings nur mit Unicode Strings, da müsstest du also noch was zum Konvertieren der Chars schreiben.
So wie deine DllMain bisher aufgebaut war, wurden pro Sekunde jede Menge QWidgets auf dem Heap allokiert, mit dem CreateThread im DLL_PROCESS_ATTACH case sollte das ganze nur einmal in einem neuen Thread aufgerufen werden.
snow is offline  
Thanks
1 User
Old 01/04/2014, 06:20   #9
 
Doktor.'s Avatar
 
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Danke!
Funktioniert bestens.
Doktor. is offline  
Reply


Similar Threads Similar Threads
VS2012/2013 Anzeigefehler
09/30/2013 - General Coding - 0 Replies
Tja, ich habe irgendwie böse Anzeigefehler. Nicht nur bei der Installation. Kennt das jemand? http://puu.sh/4EnQf.png http://puu.sh/4EoqD.png
Debug errors Vs2012
09/25/2013 - C/C++ - 1 Replies
Hallo alle, ich habe seit bisschen längerer Zeit wieder Lust ein paar kleine Programme zu schreiben und habe mir deshalb direkt die Visual Studio 2012 Express Version gesaugt und installiert. Als ich nun zum Test ob alles läuft ein kleines Programm geschrieben habe bekomme ich beim Debuggen direkt ein paar Fehlermeldungen um die Ohren gehauen. "Projekt1.exe" (Win32): "C:\Users\Name\Documents\Visual Studio 2012\Projects\Projekt1\Debug\Projekt1.exe" geladen. Symbole wurden geladen....
[Release] VS2012 Source.
02/07/2013 - Flyff PServer Guides & Releases - 32 Replies
Hier release ich meine upgedatete Source von VS2003 auf VS2012, die Fehler die auftreten sind alle behoben worden, außer die Floating Point Exceptions, die dürft ihr euch selber raussuchen und fixxen. Lange Rede kurzer Sinn. File-Upload.net - PROGRAM.rar Ich gebe dazu keinen Support. Ach... die Sachen wie die Boost SDK usw. hab ich rausgenommen damit der Ordner nicht so groß wird, den Rest der fehlt könnt ihr euch selber raussuchen und zusammenschmeißen.
Wer kennt sich mit dem erstellen einer .dll aus / kann eine erstellen ?
11/15/2011 - All Points Bulletin - 3 Replies
Hallöchen erstmal. Eine kleine frage werf ich mal kurz in die Runde: Kennt sich jemand mit dem erstellen von .dll's aus bzw. kann eine mit einem entsprechendem Source Code erstellen (für APB )? Ich weiß nicht, ob das unter Thema "Hack Request" fällt, aber naja. Wäre super, wenn jemand irgendwie ein DEUTSCHES TuT findet (ich hab keines gefunden, aber auch nicht gründlich gesucht) für irgendwas, womit man die dll's eben herstellen kann. Ansonsten wäre es sehr gut, wenn jemand, der sich mit dem...



All times are GMT +2. The time now is 11:32.


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.