<?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[Problem beim Variablenzugriff einer DLL-Funktion]]></title><description><![CDATA[<p>Ich habe folgendes Problem:<br />
Ich binde in meinem Programm eine eigene DLL ein, die grob folgendermaßen aufgebaut ist:</p>
<p>teds01.h</p>
<pre><code class="language-cpp">...
#define TEDS01_API __declspec(dllexport)
...
extern &quot;C&quot; TEDS01_API void Hersteller (void *pParam, BOOL Lesen);
...
</code></pre>
<p>teds01.cpp</p>
<pre><code class="language-cpp">...
#define TEDS01_EXPORTS
...
TEDS01_API void Hersteller(void *pParam, BOOL Lesen) {
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	CString *pName = (CString *)pParam;
	CString Nam;
	Nam = &quot;wert&quot;;
	*pName = Nam;   //hier kommt der Fehler :(

}
...
</code></pre>
<p>Auf die Funktion der DLL greife ich im Hauptprogramm so zu:</p>
<pre><code class="language-cpp">HMODULE handle;
handle = LoadLibrary(&quot;teds01.dll&quot;);
CString Her;

if (handle != NULL)
{
	typedef void (*DLLFUNC) (void *pParam, BOOL Lesen);
	DLLFUNC func = (DLLFUNC)GetProcAddress(handle, &quot;Hersteller&quot;);
	if (func)
	   func((void*)&amp;Her, 1);
</code></pre>
<p>Leider erhalte ich an der in der DLL markeirten Stelle folgenden Debugger-Fehler:<br />
Debug Assertian Fehler mit Hinweis auf einen _CrtIsValidHeapPointer(pUserData) in einer dbgheap.c</p>
<p>Da die Wertezuweisung in der DLL an sich funktioniert (habe die Methode in einem anderen Programm ausprobiert) muss es an der Einbindung der DLL liegen oder an irgend einem fehlenden Befehl in der DLL.<br />
Kann mir da jemand weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148097/problem-beim-variablenzugriff-einer-dll-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 14:47:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148097.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 May 2006 12:12:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem beim Variablenzugriff einer DLL-Funktion on Tue, 23 May 2006 12:15:01 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Problem:<br />
Ich binde in meinem Programm eine eigene DLL ein, die grob folgendermaßen aufgebaut ist:</p>
<p>teds01.h</p>
<pre><code class="language-cpp">...
#define TEDS01_API __declspec(dllexport)
...
extern &quot;C&quot; TEDS01_API void Hersteller (void *pParam, BOOL Lesen);
...
</code></pre>
<p>teds01.cpp</p>
<pre><code class="language-cpp">...
#define TEDS01_EXPORTS
...
TEDS01_API void Hersteller(void *pParam, BOOL Lesen) {
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	CString *pName = (CString *)pParam;
	CString Nam;
	Nam = &quot;wert&quot;;
	*pName = Nam;   //hier kommt der Fehler :(

}
...
</code></pre>
<p>Auf die Funktion der DLL greife ich im Hauptprogramm so zu:</p>
<pre><code class="language-cpp">HMODULE handle;
handle = LoadLibrary(&quot;teds01.dll&quot;);
CString Her;

if (handle != NULL)
{
	typedef void (*DLLFUNC) (void *pParam, BOOL Lesen);
	DLLFUNC func = (DLLFUNC)GetProcAddress(handle, &quot;Hersteller&quot;);
	if (func)
	   func((void*)&amp;Her, 1);
</code></pre>
<p>Leider erhalte ich an der in der DLL markeirten Stelle folgenden Debugger-Fehler:<br />
Debug Assertian Fehler mit Hinweis auf einen _CrtIsValidHeapPointer(pUserData) in einer dbgheap.c</p>
<p>Da die Wertezuweisung in der DLL an sich funktioniert (habe die Methode in einem anderen Programm ausprobiert) muss es an der Einbindung der DLL liegen oder an irgend einem fehlenden Befehl in der DLL.<br />
Kann mir da jemand weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063457</guid><dc:creator><![CDATA[stek]]></dc:creator><pubDate>Tue, 23 May 2006 12:15:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Variablenzugriff einer DLL-Funktion on Tue, 23 May 2006 12:19:34 GMT]]></title><description><![CDATA[<p>Du musst die EXE <strong>und</strong> die DLL mit der <strong>gleichen</strong> DLL-Version der dynamischen CRT linken!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063464</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 23 May 2006 12:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Variablenzugriff einer DLL-Funktion on Tue, 23 May 2006 20:49:28 GMT]]></title><description><![CDATA[<p>Danke für Deine Antwort - allerdings weiß ich nicht, was eine dynamische CRT ist. <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=":/"
      alt="😕"
    /><br />
(EXE und DLL sind mit der gleichen Viausl C++ - Version erstellt.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063849</guid><dc:creator><![CDATA[stek]]></dc:creator><pubDate>Tue, 23 May 2006 20:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem beim Variablenzugriff einer DLL-Funktion on Wed, 24 May 2006 05:47:45 GMT]]></title><description><![CDATA[<p>Projekteinstellungen: &quot;C/C++|Code generation|Runtime Library&quot;<br />
und hier dann<br />
&quot;Multi-threaded Debug DLL (/MDd)&quot;<br />
bzw.<br />
&quot;Multi-threaded DLL (/MD)&quot;<br />
bei beiden Projekten einstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063939</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 24 May 2006 05:47:45 GMT</pubDate></item></channel></rss>