<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[COM mit MinGW]]></title><description><![CDATA[<p>Tag zusammen,</p>
<p>ich möchte gerne ein Programm, daß offensichtlich für Visual-Studio geschrieben wurde, mit gcc (MinGW) übersetzen. Der Haken dabei ist, daß mittels COM auf einige Funktionen eines anderen Programms zugegriffen wird. Inmitten der #includes steht in etwa folgendes:</p>
<pre><code class="language-cpp">#import &quot;foo.exe&quot; no_namespace named_guids
</code></pre>
<p>Wie zu erwarten kann mein Compiler damit nicht viel anfangen. Daher meine Frage: Wie kriege ich das mit MinGW ans Laufen? Wieviel Aufwand wäre es, dieses #import Statement durch &quot;richtigen&quot; C++-Code zu ersetzen? Und vor allem, wo finde ich weitere Informationen darüber, wie man sowas macht?</p>
<p>Danke schonmal im Voraus für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234609/com-mit-mingw</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 17:37:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234609.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Feb 2009 21:18:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to COM mit MinGW on Thu, 19 Feb 2009 21:18:07 GMT]]></title><description><![CDATA[<p>Tag zusammen,</p>
<p>ich möchte gerne ein Programm, daß offensichtlich für Visual-Studio geschrieben wurde, mit gcc (MinGW) übersetzen. Der Haken dabei ist, daß mittels COM auf einige Funktionen eines anderen Programms zugegriffen wird. Inmitten der #includes steht in etwa folgendes:</p>
<pre><code class="language-cpp">#import &quot;foo.exe&quot; no_namespace named_guids
</code></pre>
<p>Wie zu erwarten kann mein Compiler damit nicht viel anfangen. Daher meine Frage: Wie kriege ich das mit MinGW ans Laufen? Wieviel Aufwand wäre es, dieses #import Statement durch &quot;richtigen&quot; C++-Code zu ersetzen? Und vor allem, wo finde ich weitere Informationen darüber, wie man sowas macht?</p>
<p>Danke schonmal im Voraus für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666732</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Thu, 19 Feb 2009 21:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Thu, 19 Feb 2009 23:08:10 GMT]]></title><description><![CDATA[<p>#import generiert auch bloss ein Include-File, und inkludiert das dann.</p>
<p>Du kannst versuchen ob MinGW mit den generierten Include-Files was anfangen kann (keine Ahnung ob da irgendwelche MS-spezifischen Sachen vorkommen).</p>
<p>Die Include-Files kannst du dir entweder von jmd. generieren lassen, oder selbst die Express Edition (ich hoffe die Express Edition kann #import *g*) von Visual Studio runterladen. Dann übersetzt du einfach 1x ein File wo die entsprechende &quot;#import&quot; Zeile drinnensteht, und kopierst dir das generierte File (liegt IIRC dort wo auch die ganzen .obj Files liegen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1666783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1666783</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 19 Feb 2009 23:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Fri, 20 Feb 2009 12:08:23 GMT]]></title><description><![CDATA[<p>Danke für den Tip. Leider scheint das allerdings auch nicht die Lösung zu sein, denn auch die generierten Header sind voll von Microsoftismen, die mit C++ nicht viel zu tun haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Andere Vorschäge...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667010</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Fri, 20 Feb 2009 12:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Fri, 20 Feb 2009 14:41:26 GMT]]></title><description><![CDATA[<p>Dann wird's doof, vor allem wenn es &quot;reine&quot; IDispatch Interfaces sind.<br />
Wenn es &quot;dual Interfaces&quot; (IDispatch + native) sind kannst du u.U. normale COM-Smart-Pointer verwenden. Umschreiben musst du dann auch einiges, aber deutlich weniger als wenn es IDispatch Interfaces sind.</p>
<p>Ich würde mal im Netz suchen ob es nicht irgendwelche Tools gibt, die dir Standard-Konforme (oder wenigstens &quot;MinGW-taugliche&quot;) Headers aus einer Type-Library erstellen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1667112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1667112</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 20 Feb 2009 14:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Sun, 22 Feb 2009 13:41:44 GMT]]></title><description><![CDATA[<p>Der OLE Viewer (Visual Studio Tools) enthält einen TypeLib-Viewer (die drei komischen Pfeile im Toolbar), damit kannst du foo.exe öffnen und den zugehörigen .IDL - Quelltext angucken.</p>
<p>Mit MIDL kannst Du daraus C/C++ import-Header generieren. Die sind zwar nicht ganz so komfortionös wie die #import-generierten, aber auch ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668050</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Sun, 22 Feb 2009 13:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Sun, 22 Feb 2009 15:00:47 GMT]]></title><description><![CDATA[<p>peterchen schrieb:</p>
<blockquote>
<p>Der OLE Viewer (Visual Studio Tools) enthält einen TypeLib-Viewer (die drei komischen Pfeile im Toolbar), damit kannst du foo.exe öffnen und den zugehörigen .IDL - Quelltext angucken.</p>
<p>Mit MIDL kannst Du daraus C/C++ import-Header generieren. Die sind zwar nicht ganz so komfortionös wie die #import-generierten, aber auch ok.</p>
</blockquote>
<p>Das klingt schonmal vielversprechend, danke! Inwieweit müßte ich denn den Code des Programms anpassen, wenn ich die mit MIDL generierten Header verwende?</p>
<p>Diese ganze COM-Geschichte ist für mich neu (habe 10 Jahre nicht mehr für Windows programmiert...), und so ganz durchschaue ich die Zusammenhänge noch nicht. Von daher fällt es mir vor allem schwer abzuschätzen, ob es den Aufwand überhaupt wert ist, oder ob ich nicht vielleicht doch besser in den sauren Apfel beiße, und mir Visual Studio besorge...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668108</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Sun, 22 Feb 2009 15:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Sun, 22 Feb 2009 21:46:38 GMT]]></title><description><![CDATA[<p>Wahr ist: Du hast noch nie für Windows programmiert.<br />
Sonst würdest Du wissen, dass COM sehr viel älter ist als 10 Jahre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668401</guid><dc:creator><![CDATA[CStern]]></dc:creator><pubDate>Sun, 22 Feb 2009 21:46:38 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Sun, 22 Feb 2009 22:54:04 GMT]]></title><description><![CDATA[<p>dooooomi schrieb:</p>
<blockquote>
<p>[...oder ob ich nicht vielleicht doch besser in den sauren Apfel beiße, und mir Visual Studio besorge...</p>
</blockquote>
<p>ist doch kostenlos <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>CStern schrieb:</p>
<blockquote>
<p>Wahr ist: Du hast noch nie für Windows programmiert.<br />
Sonst würdest Du wissen, dass COM sehr viel älter ist als 10 Jahre.</p>
</blockquote>
<p>was für ein schlaumeier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668434</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668434</guid><dc:creator><![CDATA[äpfelversüsser]]></dc:creator><pubDate>Sun, 22 Feb 2009 22:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 13:18:33 GMT]]></title><description><![CDATA[<p>äpfelversüsser schrieb:</p>
<blockquote>
<p>dooooomi schrieb:</p>
<blockquote>
<p>[...oder ob ich nicht vielleicht doch besser in den sauren Apfel beiße, und mir Visual Studio besorge...</p>
</blockquote>
<p>ist doch kostenlos <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Das ist keine Frage des Preises.</p>
<p>CStern schrieb:</p>
<blockquote>
<p>Wahr ist: Du hast noch nie für Windows programmiert.<br />
Sonst würdest Du wissen, dass COM sehr viel älter ist als 10 Jahre.</p>
</blockquote>
<p>Hat ja keiner was anderes behauptet. Aber ich erinnere mich noch an eine Zeit, als COM noch nicht so allgegenwärtig war wie heute.</p>
<p>Und noch eine Frage: Wäre es denkbar, mit Visual Studio eine statische Bibliothek zu bauen, die sich um die COM-Sachen kümmert, und dann ein MinGW-Projekt mit dieser Bibliothek zu linken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668737</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Mon, 23 Feb 2009 13:18:33 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 16:06:31 GMT]]></title><description><![CDATA[<p>CStern schrieb:</p>
<blockquote>
<p>Wahr ist: Du hast noch nie für Windows programmiert.<br />
Sonst würdest Du wissen, dass COM sehr viel älter ist als 10 Jahre.</p>
</blockquote>
<p>was für ein schlaumeier <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />[/quote]</p>
<p>Gell <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Deswegen weiß ich auch, dass das kostenlose Zeugs Bullshit ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668828</guid><dc:creator><![CDATA[CStern]]></dc:creator><pubDate>Mon, 23 Feb 2009 16:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 16:23:50 GMT]]></title><description><![CDATA[<p>CStern schrieb:</p>
<blockquote>
<p>Gell <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Deswegen weiß ich auch, dass das kostenlose Zeugs Bullshit ist.</p>
</blockquote>
<p>du meinst also, das z.b. Microsoft Visual C++ 2008 Express Edition bullshit ist, hmm... achso.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668844</guid><dc:creator><![CDATA[äpfelversüsser]]></dc:creator><pubDate>Mon, 23 Feb 2009 16:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 17:17:57 GMT]]></title><description><![CDATA[<p>Also ihr seid schon alle ein wenig plem in der Birne ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668900</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 23 Feb 2009 17:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 17:18:50 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Also ihr seid schon alle ein wenig plem in der Birne ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>du doch auch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668901</guid><dc:creator><![CDATA[we are one]]></dc:creator><pubDate>Mon, 23 Feb 2009 17:18:50 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 20:23:12 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Also ihr seid schon alle ein wenig plem in der Birne ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Genau. Vielleicht besoffen von diesem .NET-Bullshit.</p>
<p>Oder vielleicht ganz nüchtern: Interessiert mich nicht. Jedem das seine. Der Eine liebt die Kacke der andere eben nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668935</guid><dc:creator><![CDATA[CStern]]></dc:creator><pubDate>Mon, 23 Feb 2009 20:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 19:10:03 GMT]]></title><description><![CDATA[<p>dooooomi schrieb:</p>
<blockquote>
<p>Und noch eine Frage: Wäre es denkbar, mit Visual Studio eine statische Bibliothek zu bauen, die sich um die COM-Sachen kümmert, und dann ein MinGW-Projekt mit dieser Bibliothek zu linken?</p>
</blockquote>
<p>Statisch wird problematisch wegen der Unterschiedlichen Objektformaten. Eine DLL geht solange das Interface C oder WinAPI-artig ist. Wie groß ist die COM-Klasse denn? Eventuell kannst du die in VC mit einem C Interface wrappen, dieses in einer DLL exportieren und dann in deiner MinGW-Anwendung importieren und wieder mit einer COM-ähnlichen Klasse wrappen. Ist sehr unschön, aber es geht. Also so in etwa:</p>
<p>VC Teil:</p>
<pre><code class="language-cpp">// keine Ahnung ob das jetzt eine korrekte COM Klasse ist
interface IFoo{
public:
  virtual void bar()=0;
  virtual void dispose()=0;
};

IFoo*CreateFoo();

// WinAPI-style Wrapper
extern &quot;C&quot; __stdcall __declspec(dllexport)
void bar(void*f){
  ((IFoo*)f)-&gt;bar();
}

extern &quot;C&quot; __stdcall __declspec(dllexport)
void*create(){
  return CreateFoo();
}

extern &quot;C&quot; __stdcall __declspec(dllexport)
void dispose(void*f){
  ((IFoo*)f)-&gt;bar();
}
</code></pre>
<p>MinGW Teil:</p>
<pre><code class="language-cpp">namespace IFooCInterface{
// WinAPI-style Wrapper
extern &quot;C&quot; __stdcall __declspec(dllimport)
void IFoo_bar(void*f);

extern &quot;C&quot; __stdcall __declspec(dllimport)
void*create();

extern &quot;C&quot; __stdcall __declspec(dllimport)
void dispose(void*f);
}

// Wrapper um es wie ein COM aussehen zu lassen
class IFoo{
private:
  void*f;
public:
  void bar(){
    IFooCInterface::bar(f);
  }

  void Dispose(){
    // Wenn deine Anwendung das Referenzzählen benutzt muss das natüRlich anders aussehen
    IFooCInterface::dispose(f);
    delete this;
  }

  friend 
  IFoo*CreateFoo(){
    IFoo* f = new IFoo;
    f-&gt;f = IFooCInterface::create();
    return f;
  }
};
</code></pre>
<p>Ist aber schon übelstes Gefrickel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1668961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1668961</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Mon, 23 Feb 2009 19:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Mon, 23 Feb 2009 20:28:29 GMT]]></title><description><![CDATA[<p>CStern schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Also ihr seid schon alle ein wenig plem in der Birne ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Genau. Vielleicht besoffen von diesem .NET-Bullshit.</p>
<p>Oder vielleicht ganz nüchtern: Interessiert mich nicht. Jedem das seine. Der Eine liebt die Kacke der andere eben nicht.</p>
</blockquote>
<p>Hm.<br />
Also ich bin nicht der der hier noch kein einziges sinnvolles und/oder hilfreiches Kommentar geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669020</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 23 Feb 2009 20:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Tue, 24 Feb 2009 12:25:44 GMT]]></title><description><![CDATA[<p>Wäre auch ziemlich blödsinnig, um ein COM DLL nochmal ein Win32 DLL drumrumzulegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Statische Bibliothek kann gehen, muß nicht - und die möglichen Fehler können recht eklig werden.</p>
<blockquote>
<p>Das klingt schonmal vielversprechend, danke! Inwieweit müßte ich denn den Code des Programms anpassen, wenn ich die mit MIDL generierten Header verwende?</p>
</blockquote>
<p>Im besten Fall gar nicht, die MIDL generierten Header fordern nur windows.h. Ich hab' aber keine Erfahrung mit MinGW, ob es da noch andere Überraschungen gibt.</p>
<p>COM - Programmierung - insebsondere in C++ - ist von Haus aus nicht so ganz schnucklig, aber ertäglich. Probier's einfach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669279</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Tue, 24 Feb 2009 12:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Tue, 24 Feb 2009 17:57:45 GMT]]></title><description><![CDATA[<p>peterchen schrieb:</p>
<blockquote>
<p>Wäre auch ziemlich blödsinnig, um ein COM DLL nochmal ein Win32 DLL drumrumzulegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Statische Bibliothek kann gehen, muß nicht - und die möglichen Fehler können recht eklig werden.</p>
<blockquote>
<p>Das klingt schonmal vielversprechend, danke! Inwieweit müßte ich denn den Code des Programms anpassen, wenn ich die mit MIDL generierten Header verwende?</p>
</blockquote>
<p>Im besten Fall gar nicht, die MIDL generierten Header fordern nur windows.h. Ich hab' aber keine Erfahrung mit MinGW, ob es da noch andere Überraschungen gibt.</p>
</blockquote>
<p>Das Problem wird eher nicht sein dass die MIDL generierten Headers noch irgendwas brauchen, sondern dass sie sich anders Verhalten bzw. gewisse Dinge nicht in der Form anbieten werden wie die von #import generierten.</p>
<p>Mit den von #import generierten kann man z.B. schreiben</p>
<pre><code class="language-cpp">long l = comInterface-&gt;SomeProperty;
long l2 = comInterface-&gt;Items[&quot;sepp&quot;]-&gt;Value;
comInterface-&gt;SomeOperation(); // und wenns schief geht fliegt ein _com_error statt dass ein HRESULT zurückgegeben wird
</code></pre>
<p>Ich vermute die MIDL generierten Headers werden diese Funktionen nicht anbieten. z.B. schonmal deswegen weil _com_error eine der &quot;Compiler COM Support Classes&quot; ist. Also Visual Studio spezifisch.</p>
<blockquote>
<p>COM - Programmierung - insebsondere in C++ - ist von Haus aus nicht so ganz schnucklig, aber ertäglich. Probier's einfach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Client-Seitig ist es mit #import eigentlich ziemlich schnuckelig. Wäre natürlich cool wenn es ein Tool gäbe welches vergleichbare Headers für mehrere Compiler erstellen könnte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669536</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Feb 2009 17:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Wed, 25 Feb 2009 08:26:25 GMT]]></title><description><![CDATA[<p>ja, MIDL generiert nur die &quot;einfachen&quot; Header, so, wie die binäre Schnittstelle definiert ist. Die schönen #import - Wrapper bekommt man da nicht. Aber wenn er die noch nicht kennt, tut das vielleicht nicht.... hm, nee, hast recht, do<sup>5</sup>mi will ja den Rest auch noch mit übersdetzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> Ich hatte mich ganz auf das IDL selbst gestürzt.</p>
<p>Da er mit COM nicht so viel Erfahrung hat, ist das hinpfriemeln der Aufrufe auch eher fragwürdig. Würde unter diesen Umständen doch zu VC Express raten.</p>
<p>Alternativ: Die #import-Header generieren lassen, _com_issue_error sowie _bstr_t _variant_t ... ahem... &quot;nachempfinden&quot;. Ist aber auch nciht so einfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669773</guid><dc:creator><![CDATA[peterchen]]></dc:creator><pubDate>Wed, 25 Feb 2009 08:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to COM mit MinGW on Wed, 25 Feb 2009 12:40:26 GMT]]></title><description><![CDATA[<p>Danke euch allen (die etwas zum Thema beizutragen hatten ;)).</p>
<p>Ich werde die MIDL-Variante in den nächsten Tagen mal ausprobieren, und sehen wie weit ich damit komme. Die Menge an COM-Code die ich brauche ist zum Glück recht überschaubar, so daß ich da eigentlich ganz optimistisch bin. Vorausgesetzt natürlich, daß mir Microsoft oder sonstwer keine weiteren Steine mehr in den Weg legt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669939</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Wed, 25 Feb 2009 12:40:26 GMT</pubDate></item></channel></rss>