<?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[ActiveX-DLL Exception]]></title><description><![CDATA[<p>Hallo Freunde der Nacht und Extragrüße an den guten alten Mr. B.,</p>
<p>ich habe eine ActiveX-DLL (Project raw, Klasse craw, Funktion getClientLicenses() as long) in VB6 erstellt und rufe diese in VC6 so auf:</p>
<pre><code class="language-cpp">CLSID clsid;
CoInitialize(NULL);
HRESULT hResult = CLSIDFromProgID(OLESTR(&quot;raw.craw&quot;), &amp;clsid);
_craw *t;
hResult = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, __uuidof(_craw), (LPVOID *) &amp;t);
if(hResult != S_OK) return INVALID_LICENSE_KEY;
long iRes = (long)t-&gt;getClientLicenses();
t-&gt;Release();
CoUninitialize();
return iRes;
</code></pre>
<p>Das läuft ohne Probleme. Aber in der IDE unter Debugbedingungen greift der Compiler per First Chance Exception zu und meckert über eine nicht abgefangene Exception durch ein invalides Handle in der Zeile hResult = CoCreateInstance(...).</p>
<p>Wie kriege ich diese blöde Meldung weg?</p>
<p>Beste Grüße</p>
<p>Euren Wruckinator</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/79991/activex-dll-exception</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 04:34:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/79991.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Jul 2004 08:40:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ActiveX-DLL Exception on Fri, 16 Jul 2004 08:40:21 GMT]]></title><description><![CDATA[<p>Hallo Freunde der Nacht und Extragrüße an den guten alten Mr. B.,</p>
<p>ich habe eine ActiveX-DLL (Project raw, Klasse craw, Funktion getClientLicenses() as long) in VB6 erstellt und rufe diese in VC6 so auf:</p>
<pre><code class="language-cpp">CLSID clsid;
CoInitialize(NULL);
HRESULT hResult = CLSIDFromProgID(OLESTR(&quot;raw.craw&quot;), &amp;clsid);
_craw *t;
hResult = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, __uuidof(_craw), (LPVOID *) &amp;t);
if(hResult != S_OK) return INVALID_LICENSE_KEY;
long iRes = (long)t-&gt;getClientLicenses();
t-&gt;Release();
CoUninitialize();
return iRes;
</code></pre>
<p>Das läuft ohne Probleme. Aber in der IDE unter Debugbedingungen greift der Compiler per First Chance Exception zu und meckert über eine nicht abgefangene Exception durch ein invalides Handle in der Zeile hResult = CoCreateInstance(...).</p>
<p>Wie kriege ich diese blöde Meldung weg?</p>
<p>Beste Grüße</p>
<p>Euren Wruckinator</p>
]]></description><link>https://www.c-plusplus.net/forum/post/561910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/561910</guid><dc:creator><![CDATA[El Wruckinatore]]></dc:creator><pubDate>Fri, 16 Jul 2004 08:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to ActiveX-DLL Exception on Fri, 16 Jul 2004 14:50:26 GMT]]></title><description><![CDATA[<p>Ich weiß nicht, warum du es so kompliziert machst.<br />
Ich hätte es so gemacht:</p>
<pre><code class="language-cpp">#import &quot;raw.dll&quot; rename_namespace(&quot;RawLib&quot;)
RawLib::IDeinInterfaceNamePtr m_InterfaceName;
HRESULT res = m_InterfaceName.CreateInstance(__uuidof(RawLib::DeinInterfaceNamePtr));
if (SUCCEEDED(res)) {
    ; // Erzeugung OK mach irgendwas    
}
else {
	; // Erzeugung Nicht OK, mach was anderes
}

// Wenn OK
try {
long ret = m_InterfaceName-&gt;getClientLicenses();
// Jetzt mach irgendwas mit deinem ret..
}
catch(_com_error&amp; rExc)
{
    ; // Mache irgendwelche Behandlng hier..
}
// fertig
</code></pre>
<p>So würde ich mit einem Active-X oder allgemein mit einem COM Ding umgehen die in C++ geschrieben sind. Ob Du im VB die Interfaces auch so hast weiß ich nicht, müsste aber irgendwie ähnlic gehen. Ist zumindest viel einfacher als deine lösung. Kannst Ja &quot;RawLib::&quot; eintippen, dann siehst du ja, was für Interfaces du hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/562267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/562267</guid><dc:creator><![CDATA[lazydot]]></dc:creator><pubDate>Fri, 16 Jul 2004 14:50:26 GMT</pubDate></item><item><title><![CDATA[Reply to ActiveX-DLL Exception on Mon, 19 Jul 2004 16:17:00 GMT]]></title><description><![CDATA[<p>Hallo lazydot! Deine Methode ist sehr logisch und scheint wirklich die einfachste zu sein. Aber leider: Ich bekomme durch den Aufruf zwar eine uuid zurück, aber die Erstellung einer Instanz der Klasse schlägt auf diesem Wege fehl. Ich bleibe aber dran und melde mich wieder...</p>
<p>Danke für die ausführliche Antwort!</p>
<p>Wruckinator</p>
]]></description><link>https://www.c-plusplus.net/forum/post/563887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/563887</guid><dc:creator><![CDATA[El Wruckinatore]]></dc:creator><pubDate>Mon, 19 Jul 2004 16:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to ActiveX-DLL Exception on Wed, 21 Jul 2004 07:45:02 GMT]]></title><description><![CDATA[<p>El Wruckinatore schrieb:</p>
<blockquote>
<p>..Aber leider: Ich bekomme durch den Aufruf zwar eine uuid zurück, aber die Erstellung einer Instanz der Klasse schlägt auf diesem Wege fehl..</p>
</blockquote>
<p>Schuldigung, ich hatte auch einen kleinen Fehler gemacht, mach es ung. so:</p>
<pre><code class="language-cpp">#import &quot;raw.dll&quot; rename_namespace(&quot;RawLib&quot;) // deine dll hier
RawLib::IDeinInterfaceNamePtr m_InterfaceName; // hier muss du wissen, welchen
// Interface Smart Pointer du haben willst, einfach RawLib::&lt;Strg&gt;+&lt;Space&gt; 
// eintippen, dann siehst du was du brauchst
HRESULT res = m_InterfaceName.CreateInstance(__uuidof(RawLib::DeinInterfaceNamePtr)); 
// hier war der Fehler, Wenn du RawLib::IDeinInterfaceNamePtr m_InterfaceName 
// gemachst hast, dann muss du hier __uuidof(RawLib::DeinInterfaceName)
// machen (ohne &quot;I&quot; davor und ohne &quot;Ptr&quot; danach)
</code></pre>
<p>Hilft dir das weiter? Du kannst auch in den Projekt Settings Kategorie &quot;Debug&quot;, &quot;Zusätzliche Dll's&quot; wählen und dann den Pfad zu deiner Dll eingeben, dann ist ein möglicher Fehler weniger.</p>
<p>Kannst du deine VB Dll über VC++ Projekt aus debuggen? Mach das mal, könnte interessant sein. Ich kann aus einem VC++ Projekt ein anderes VC++ Projekt debuggen, ob es mit VB geht, muss du ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/564919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/564919</guid><dc:creator><![CDATA[lazydot]]></dc:creator><pubDate>Wed, 21 Jul 2004 07:45:02 GMT</pubDate></item></channel></rss>