2016-04-16 11 views
2

Ich habe ein Winforms-Projekt und ein Konsolenprojekt.
Ich habe die Konsolenanwendung von der Winforms App als externen Prozess gestartet, möchte aber beide in eine einzige EXE-Datei kompilieren, wenn möglich.Embed eine exe in eine andere, um eine einzige exe zu bauen?

Ich habe sie beide in eine einzige VS 2015 Lösung gebracht. Kann ich dies erreichen, indem ich die Konsolen-App in eine Bibliothek umwandeln kann?

Abgesehen von allen Bezugs-, Abhängigkeits- und Linkereinstellungen/-pfaden, wie würde ich die Befehlszeilenargumente an die Konsole übergeben und die Konsolenanwendung aus dem Winforms-Code starten. d. h. zum Einstiegspunkt der Konsolen-App springen? Die Lösung baut sich soweit auf.

+0

Meinen Sie eine andere '.exe' als Ressource zur Verfügung zu stellen, oder was? Es ist völlig unklar, wonach du fragst. –

+0

Ich glaube nicht, dass es so unklar ist. Er hat zwei Programme, die er von Visual Studio aus ausführt, und er möchte sie als einzelne exe exportieren. – nhouser9

+0

OK, gut, zip 'em up! –

Antwort

1

Ja, eine Bibliothek ist der richtige Ansatz. Wenn Sie eine EXE-Datei wünschen, sollten Sie sie als statische Bibliothek verlinken.

Nach dem Konvertieren des Projekts in eine Bibliothek, ändern Sie die "Haupt" -Funktion, um einen anderen Namen zu verwenden, werde ich zum Beispiel "Foobar" verwenden.

Wenn Ihr WinForms Projekt C++ als auch, schaffen neben einer h-Datei, die die Definition für die „foobar“ Funktion hat, z.B .:

int foobar(int argc, char *argv[]); 

Dies wird Ihrer Bibliothek externe Schnittstelle sein. Schließen Sie es einfach ein, und dann können Sie es anrufen:

Natürlich können Sie diese Funktion auch ändern, um bequemere Argumente zu nehmen. Denken Sie daran, dass argv [0] standardmäßig der Name des Programms ist und wahrscheinlich ignoriert wird.

Wenn Sie C# verwenden oder das .h nicht direkt enthalten können, bin ich nicht sicher, ob dies möglich ist. Siehe hier:

How to compile C# application with C++ static library?

+0

Danke. Scheint, dass ich das brauchte, um mich in die richtige Richtung zu bringen. Zumindest gibt es jetzt Befehlsparserfehler zurück. – GTF

Verwandte Themen