<?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[Erstellen einer DLL eines C Modules]]></title><description><![CDATA[<p>Ich vewrsuche gerade eine DLL eines C Moduls zu erstellen.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
//---------------------------------------------------------------------------
//   Wichtiger Hinweis über die DLL-Speicherverwaltung, falls die DLL die statische
//   Version der Laufzeitbibliothek (RTL) verwendet:
//
//   Wenn die DLL Funktionen exportiert, die String-Objekte (oder Strukturen/
//   Klassen, die verschachtelte Strings enthalten) als Parameter oder Funktionsergebnisse übergibt,
//   muß die Bibliothek MEMMGR.LIB im DLL-Projekt und anderen Projekten,
//   die die DLL verwenden, vorhanden sein. Sie benötigen MEMMGR.LIB auch dann,
//   wenn andere Projekte, die die DLL verwenden, new- oder delete-Operationen
//   auf Klassen anwenden, die nicht von TObject abgeleitet sind und die aus der DLL exportiert
//   werden. Durch das Hinzufügen von MEMMGR.LIB wird die DLL und deren aufrufende EXEs
//   angewiesen, BORLNDMM.DLL als Speicherverwaltung zu benutzen. In diesem Fall
//   sollte die Datei BORLNDMM.DLL zusammen mit der DLL weitergegeben werden.
//
//   Um die Verwendung von BORLNDMM.DLL, zu vermeiden, solten String-Informationen als &quot;char *&quot; oder
//   ShortString-Parameter weitergegeben werden.
//
//   Falls die DLL die dynamische Version der RTL verwendet, müssen Sie
//   MEMMGR.LIB nicht explizit angeben.
//---------------------------------------------------------------------------

#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
	return 1;
}
</code></pre>
<p>Soweit bin ich, wie geht es weiter.<br />
Ich möchte eine Funktion &quot;unsigned int Test(unsigned int Cnt) zufügen&quot;<br />
wie gehe ich da vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136884/erstellen-einer-dll-eines-c-modules</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 03:28:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136884.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Feb 2006 20:29:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erstellen einer DLL eines C Modules on Mon, 13 Feb 2006 20:29:12 GMT]]></title><description><![CDATA[<p>Ich vewrsuche gerade eine DLL eines C Moduls zu erstellen.</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
//---------------------------------------------------------------------------
//   Wichtiger Hinweis über die DLL-Speicherverwaltung, falls die DLL die statische
//   Version der Laufzeitbibliothek (RTL) verwendet:
//
//   Wenn die DLL Funktionen exportiert, die String-Objekte (oder Strukturen/
//   Klassen, die verschachtelte Strings enthalten) als Parameter oder Funktionsergebnisse übergibt,
//   muß die Bibliothek MEMMGR.LIB im DLL-Projekt und anderen Projekten,
//   die die DLL verwenden, vorhanden sein. Sie benötigen MEMMGR.LIB auch dann,
//   wenn andere Projekte, die die DLL verwenden, new- oder delete-Operationen
//   auf Klassen anwenden, die nicht von TObject abgeleitet sind und die aus der DLL exportiert
//   werden. Durch das Hinzufügen von MEMMGR.LIB wird die DLL und deren aufrufende EXEs
//   angewiesen, BORLNDMM.DLL als Speicherverwaltung zu benutzen. In diesem Fall
//   sollte die Datei BORLNDMM.DLL zusammen mit der DLL weitergegeben werden.
//
//   Um die Verwendung von BORLNDMM.DLL, zu vermeiden, solten String-Informationen als &quot;char *&quot; oder
//   ShortString-Parameter weitergegeben werden.
//
//   Falls die DLL die dynamische Version der RTL verwendet, müssen Sie
//   MEMMGR.LIB nicht explizit angeben.
//---------------------------------------------------------------------------

#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
	return 1;
}
</code></pre>
<p>Soweit bin ich, wie geht es weiter.<br />
Ich möchte eine Funktion &quot;unsigned int Test(unsigned int Cnt) zufügen&quot;<br />
wie gehe ich da vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/993493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/993493</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Mon, 13 Feb 2006 20:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen einer DLL eines C Modules on Mon, 13 Feb 2006 20:35:44 GMT]]></title><description><![CDATA[<p><a href="http://bcb-tutorial.c-plusplus.net/" rel="nofollow">http://bcb-tutorial.c-plusplus.net/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/993499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/993499</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Mon, 13 Feb 2006 20:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Erstellen einer DLL eines C Modules on Tue, 14 Feb 2006 00:00:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe nun mal folgendes probiert.</p>
<p>Die DLL</p>
<pre><code class="language-cpp">#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
	return 1;
}
//---------------------------------------------------------------------------
__declspec (dllexport) int Test(int Cnt)
{
	Cnt++;
     return Cnt;
}
</code></pre>
<p>Meine Anwendung</p>
<pre><code class="language-cpp">typedef int (__stdcall *Test)(int Cnt);
Test _Test;
HINSTANCE DllHandle;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
 		DllHandle = LoadLibrary(&quot;dll_.dll&quot;);
  		if(Handle == NULL)
          {
          	Application-&gt;MessageBox(&quot;can not load DLL&quot;,&quot;error&quot;,MB_ICONSTOP);
		}
          else
          {
		   	_Test = (Test) GetProcAddress(DllHandle, &quot;_Test&quot;);
		  	if(_Test == NULL)Application-&gt;MessageBox(&quot;DLL Error&quot;,&quot;error&quot;,MB_ICONSTOP);
          }
          Cnt = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	Cnt = _Test(Cnt);
     Edit1-&gt;Text = Cnt;
}
</code></pre>
<p>Funkt soweit, aber lasse ich in Button1Click das Edit1-&gt;Text = Cnt weg<br />
//---------------------------------------------------------------------------<br />
void __fastcall TForm1::Button1Click(TObject *Sender)<br />
{<br />
Cnt = _Test(Cnt);<br />
}<br />
gibt es beim Rücksprung eine Zugriffsverletzung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/993605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/993605</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Tue, 14 Feb 2006 00:00:43 GMT</pubDate></item></channel></rss>