<?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[DLL Problem o_O]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe in meinem Programm DLLs als Plug-Ins benutzt.</p>
<p>Nun, alles lief prima - nur jetzt ging es daran meiner DLL eine Struktur zu übergeben.</p>
<p>Die Struktur nannte sich CDLLInfo und sie sah etwa so aus:</p>
<p>struct CDLLInfo<br />
{<br />
CSettings *Settings;<br />
};</p>
<p>Nichts weiter..<br />
Ich schickte der DLL also als Parameter bei der Funktion diese Strukur mit - Es funktioniert!<br />
Ich schickte der DLL den Parameter auch bei einer zweiten Funktion mit - Es funktioniert nicht mehr. Es stürzt mit einer Zugriffsverletzung ab.</p>
<p>Nach langem testen und überprüfen bin ich zu folgenden fakten gekommen:</p>
<p>- Wenn ich nur einer der beiden Funktionen die Struktur übergebe, funktioniert es.<br />
- Die DLLs haben 100%ig die selben Strukturen<br />
- Die DLLs benutzen die Strukturen noch nicht mal.</p>
<p>Selbst wenn ich das ganze über einen void * laufen lasse gehts nicht.<br />
So sieht die Funktion aus bei der das ganze abstürzt.</p>
<p>extern &quot;C&quot; __declspec(dllexport) char *__stdcall GetFileExt(void *a)<br />
{<br />
return &quot;.bmp&quot;;<br />
}</p>
<p>Woran kann das liegen oder wie kann ich probieren das Problem zu beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/74767/dll-problem-o_o</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 22:00:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/74767.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 May 2004 15:20:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DLL Problem o_O on Mon, 24 May 2004 15:20:05 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe in meinem Programm DLLs als Plug-Ins benutzt.</p>
<p>Nun, alles lief prima - nur jetzt ging es daran meiner DLL eine Struktur zu übergeben.</p>
<p>Die Struktur nannte sich CDLLInfo und sie sah etwa so aus:</p>
<p>struct CDLLInfo<br />
{<br />
CSettings *Settings;<br />
};</p>
<p>Nichts weiter..<br />
Ich schickte der DLL also als Parameter bei der Funktion diese Strukur mit - Es funktioniert!<br />
Ich schickte der DLL den Parameter auch bei einer zweiten Funktion mit - Es funktioniert nicht mehr. Es stürzt mit einer Zugriffsverletzung ab.</p>
<p>Nach langem testen und überprüfen bin ich zu folgenden fakten gekommen:</p>
<p>- Wenn ich nur einer der beiden Funktionen die Struktur übergebe, funktioniert es.<br />
- Die DLLs haben 100%ig die selben Strukturen<br />
- Die DLLs benutzen die Strukturen noch nicht mal.</p>
<p>Selbst wenn ich das ganze über einen void * laufen lasse gehts nicht.<br />
So sieht die Funktion aus bei der das ganze abstürzt.</p>
<p>extern &quot;C&quot; __declspec(dllexport) char *__stdcall GetFileExt(void *a)<br />
{<br />
return &quot;.bmp&quot;;<br />
}</p>
<p>Woran kann das liegen oder wie kann ich probieren das Problem zu beheben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/526386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/526386</guid><dc:creator><![CDATA[_ProfEich]]></dc:creator><pubDate>Mon, 24 May 2004 15:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Problem o_O on Mon, 24 May 2004 16:21:35 GMT]]></title><description><![CDATA[<p>ich denke mal das problem liegt in return &quot;.bmp&quot;;</p>
<p>ich denke der zeiger auf den char den du zurückgibst ist ungütlig, da der text mit dem ende der funktion seinen gültigkeitsbereich verlässt.</p>
<p>du solltest zeiger als rückgabewert mit bedacht einsetzen, eben aus derartigen gründen.</p>
<p>besser ist es, wenn du als parameter einen zeiger auf ein char array verlangst und diese mit den werten füllst ( z.b. strcpy( text, &quot;.bmp&quot; ) ).<br />
aufpassen musst du hier, dass die arraygrenze nicht überschritten wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/526427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/526427</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 24 May 2004 16:21:35 GMT</pubDate></item><item><title><![CDATA[Reply to DLL Problem o_O on Mon, 24 May 2004 16:52:07 GMT]]></title><description><![CDATA[<p>Danke schonmal - aber so wirklich tut sich da immernoch nichts...</p>
<p>Jetzt hab ich es sogar schon nahezu auf 0 gekürzt.</p>
<pre><code class="language-cpp">/* ... */

extern &quot;C&quot; __declspec(dllexport) void __stdcall GetDLLInfo(CDLLInfo* info)
{
  info-&gt;Name = &quot;Windows Bitmap&quot;;
  info-&gt;Description = &quot;Importiert Windows Bitmap-Dateien\r\n\r\nVersion 0.1b&quot;;
  info-&gt;Type = dllImage;
}

extern &quot;C&quot; __declspec(dllexport) void __stdcall GetFileExt(void)
{
}
</code></pre>
<p>So funktioniert das ganze - Beide Funktionen werden problemlos aufgerufen!</p>
<p>Und so funktioniert es nicht mehr:</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec(dllexport) void __stdcall GetDLLInfo(CDLLInfo* info, CSettings *s)
</code></pre>
<p>Ich ändere selbstverständlich auch die Parameter in der Datei wo ich die DLL aufrufe.</p>
<p>dllGetDLLInfo( /* ... */ );<br />
/* ... */<br />
// Und hier stürzt das ganze ab:<br />
dllGetFileExt();</p>
<p>Ich versuche mal eine kurze Version vom ganzen Problem zu kriegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/526440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/526440</guid><dc:creator><![CDATA[_ProfEich]]></dc:creator><pubDate>Mon, 24 May 2004 16:52:07 GMT</pubDate></item></channel></rss>