Haben Sie eine seltsame Frage; Ich benutze ein Werkzeug von einer großen Firma, die aus Gründen, die ich etwas verwirrend finde, eine COM-Schnittstelle verwendet, die in der EXE selbst definiert ist. In dem von ihnen bereitgestellten Beispielcode sieht es so aus.COM exe, C++ und MinGW
#import "C:\\Path_To_Exe\\the.exe" rename_namespace ("exe_namespace");
Von dem, was ich verstehe, ist dies die Art und Weise Microsoft Visual C++ Compiler die COM und arbeitet mit ihr versteht, und ich habe den Beispielcode arbeiten vor (zur Zeit hatte, es nicht kompiliert aufgrund Hantieren mit meiner Build-Umgebung).
Meine Frage ist, gibt es eine Möglichkeit, das gleiche mit MinGW zu tun? Das Projekt, an dem ich arbeite, benutzt das hauptsächlich; Wir können MSVC bei Bedarf verwenden, aber ich würde es idealerweise vermeiden, wenn möglich mehrere Compiler zu verwenden. Momentan benutze ich cmake, um mit zu bauen, aber ich bin bereit, ein Skript zu verwenden, um die Elemente zu erstellen, die bei Bedarf die COM-Schnittstelle benötigen.
Danke für Ihre Zeit.
Sie können alle notwendigen COM-Schnittstellen neu deklarieren. Sie sollten in der Lage sein, dies auch in einfacher C zu tun. Obwohl es scheint, als wäre dies nur eine Verschwendung von Zeit und Sie sollten stattdessen Visual Studio verwenden. – VTT
Dies ist eher üblich für COM-Schnittstellen. Es gibt keinen Grund, warum eine MinGW-Anwendung dasselbe nicht tun kann. Der Vorteil von MSVC besteht darin, dass es Code-Generierungstools und die MIDL-Sprache bietet, die ziemlich viel helfen. Eine Google-Suche von "msdn register com interface" liefert Ihnen Details darüber, wie Sie die Funktionalität von Hand bereitstellen können. –
['# import'] (https://msdn.microsoft.com/en-us/library/8etzzkb6.aspx) impliziert, dass die Datei eine COM-Typbibliothek ist. Sie können dies über den alten [COM/OLE-Viewer] (https://msdn.microsoft.com/en-us/library/d0kh9f4c.aspx) prüfen und den Schnittstellencode kopieren. Wie ich mich erinnere, ist das Arbeiten mit COM/OLE über den g ++ - Compiler nicht sehr praktisch. –