|
You last visited: Today at 11:32
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.
12/31/2013, 00:12
|
#1
|
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
|
|
|
01/01/2014, 16:30
|
#2
|
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
|
Niemand eine Ahnung?
|
|
|
01/02/2014, 12:45
|
#3
|
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.
|
|
|
01/03/2014, 00:49
|
#4
|
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.
|
|
|
01/03/2014, 13:10
|
#5
|
elite*gold: 2932
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();
}
|
|
|
01/03/2014, 13:44
|
#6
|
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..
|
|
|
01/04/2014, 05:26
|
#7
|
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();
}
|
|
|
01/04/2014, 06:14
|
#8
|
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.
|
|
|
01/04/2014, 06:20
|
#9
|
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
|
Danke!
Funktioniert bestens.
|
|
|
|
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.
|
|