<?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[Dynamische DLL - kleiner Fehler nach Tutorial]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe gerade das Builder Tutorial &quot;DLL - Dynamic Link Library&quot; anhand des Beispiels dynamische DLL durchgarbeitet. Ich habe allerdings zur Erzielung eines besseren Lerneffektes gleich eine eigene (sehr kleine) Funktion und eine eigene Test-Anwendung geschrieben / erstellt. Nun bekomme ich beim Erzeugen der Projekte die Fehlermeldung:</p>
<p><strong>[C++ Fehler] Unit1.cpp(52): E2031 Typumwandlung von 'int' nach 'void(int)' nicht zulässig</strong></p>
<p>in der Test-Anwendung, wo ich die dll-Funktion aufrufe:</p>
<pre><code class="language-cpp">Wait(50);
</code></pre>
<p>Da ich momentan vor Deklarationen, Definitionen, Schnittstellenfunktionen, Funktionszeigertypen etc. nicht mehr durchsehe, benötige ich Eure Hilfe den Fehler zu beseitigen und zu verstehen!</p>
<p>Die Funktion soll einfach nur eine Wartezeit einfügen. Die DLL-zugehörige unit2 sieht so aus:</p>
<pre><code class="language-cpp">//Project2.dll-&gt;Unit2
#include &lt;vcl.h&gt;
#include &lt;windows.h&gt;
#pragma hdrstop

#pragma argsused

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{   return 1;    }
//---------------------------------------------------------------------------

extern&quot;C&quot; __declspec(dllexport) void Wait(int W)	
{   Sleep((int)W);
    Application-&gt;ProcessMessages();    }
</code></pre>
<p>Die Import-Unit sieht so aus:</p>
<pre><code class="language-cpp">// Project1.exe-&gt;Import.cpp
//Import.h:
#ifndef ImportH
#define ImportH
//---------------------------------------------------------------------------

typedef void Wait(int W);

Wait(W);

#endif
//===========================================================================
//Import.cpp:
#pragma hdrstop
#include &quot;Import.h&quot;
//---------------------------------------------------------------------------

#pragma package(smart_init)

void Wait(int W) 
{   TWait* Wait; 
    HINSTANCE h = LoadLibrary(&quot;Project2.dll&quot;); 
    if (h != 0)
        Wait = (TWait*)GetProcAddress(h, &quot;_Wait&quot;);
    void Wait(int W); 
    FreeLibrary(h);    }
</code></pre>
<p>Die Test-Anwendung sieht so aus:</p>
<pre><code class="language-cpp">//Project1.exe-&gt;Unit1.cpp
#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
#include &quot;Import.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{}

...
void __fastcall TForm1::Button2Click(TObject *Sender)
{   Button1-&gt;Enabled= false;
    for (int i=1; i&lt;100; i++)
    {   if (i&lt;10) {    Label1-&gt;Caption= &quot;0&quot; + IntToStr(int(i));    }
        else if (i&gt;9) {    Label1-&gt;Caption= IntToStr(int(i));    }
        Wait(50);    }
    Label1-&gt;Caption= &quot;00&quot;;
    Button1-&gt;Enabled= true;    }
</code></pre>
<p>Ich habe keine Ahnung, was ich falsch mache! <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>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184946/dynamische-dll-kleiner-fehler-nach-tutorial</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 06:31:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184946.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Jun 2007 14:32:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Wed, 20 Jun 2007 14:32:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe gerade das Builder Tutorial &quot;DLL - Dynamic Link Library&quot; anhand des Beispiels dynamische DLL durchgarbeitet. Ich habe allerdings zur Erzielung eines besseren Lerneffektes gleich eine eigene (sehr kleine) Funktion und eine eigene Test-Anwendung geschrieben / erstellt. Nun bekomme ich beim Erzeugen der Projekte die Fehlermeldung:</p>
<p><strong>[C++ Fehler] Unit1.cpp(52): E2031 Typumwandlung von 'int' nach 'void(int)' nicht zulässig</strong></p>
<p>in der Test-Anwendung, wo ich die dll-Funktion aufrufe:</p>
<pre><code class="language-cpp">Wait(50);
</code></pre>
<p>Da ich momentan vor Deklarationen, Definitionen, Schnittstellenfunktionen, Funktionszeigertypen etc. nicht mehr durchsehe, benötige ich Eure Hilfe den Fehler zu beseitigen und zu verstehen!</p>
<p>Die Funktion soll einfach nur eine Wartezeit einfügen. Die DLL-zugehörige unit2 sieht so aus:</p>
<pre><code class="language-cpp">//Project2.dll-&gt;Unit2
#include &lt;vcl.h&gt;
#include &lt;windows.h&gt;
#pragma hdrstop

#pragma argsused

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{   return 1;    }
//---------------------------------------------------------------------------

extern&quot;C&quot; __declspec(dllexport) void Wait(int W)	
{   Sleep((int)W);
    Application-&gt;ProcessMessages();    }
</code></pre>
<p>Die Import-Unit sieht so aus:</p>
<pre><code class="language-cpp">// Project1.exe-&gt;Import.cpp
//Import.h:
#ifndef ImportH
#define ImportH
//---------------------------------------------------------------------------

typedef void Wait(int W);

Wait(W);

#endif
//===========================================================================
//Import.cpp:
#pragma hdrstop
#include &quot;Import.h&quot;
//---------------------------------------------------------------------------

#pragma package(smart_init)

void Wait(int W) 
{   TWait* Wait; 
    HINSTANCE h = LoadLibrary(&quot;Project2.dll&quot;); 
    if (h != 0)
        Wait = (TWait*)GetProcAddress(h, &quot;_Wait&quot;);
    void Wait(int W); 
    FreeLibrary(h);    }
</code></pre>
<p>Die Test-Anwendung sieht so aus:</p>
<pre><code class="language-cpp">//Project1.exe-&gt;Unit1.cpp
#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Unit1.h&quot;
#include &quot;Import.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{}

...
void __fastcall TForm1::Button2Click(TObject *Sender)
{   Button1-&gt;Enabled= false;
    for (int i=1; i&lt;100; i++)
    {   if (i&lt;10) {    Label1-&gt;Caption= &quot;0&quot; + IntToStr(int(i));    }
        else if (i&gt;9) {    Label1-&gt;Caption= IntToStr(int(i));    }
        Wait(50);    }
    Label1-&gt;Caption= &quot;00&quot;;
    Button1-&gt;Enabled= true;    }
</code></pre>
<p>Ich habe keine Ahnung, was ich falsch mache! <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>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309979</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Wed, 20 Jun 2007 14:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Wed, 20 Jun 2007 14:46:02 GMT]]></title><description><![CDATA[<p>Hi,<br />
wo ist denn der TWait aus</p>
<pre><code>void Wait(int W)
{   TWait* Wait;
...
</code></pre>
<p>deklariert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309987</guid><dc:creator><![CDATA[SilentSurfer]]></dc:creator><pubDate>Wed, 20 Jun 2007 14:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Wed, 20 Jun 2007 14:50:14 GMT]]></title><description><![CDATA[<p>Machs mal so</p>
<pre><code class="language-cpp">/ Project1.exe-&gt;Import.cpp
//Import.h:
#ifndef ImportH
#define ImportH
//---------------------------------------------------------------------------

typedef void TWait(int W); //das sollte ja wohl TWait sein

//===========================================================================
//Import.cpp:
#pragma hdrstop
#include &quot;Import.h&quot;
//---------------------------------------------------------------------------

#pragma package(smart_init)

void Wait(int W)
{   
    TWait* waitfnc; //es ist ungünstig eine interne Variable wie die Funktion zu benennen
    HINSTANCE h = LoadLibrary(&quot;Project2.dll&quot;);
    if (h != 0)
        waitfnc= (TWait*)GetProcAddress(h, &quot;_Wait&quot;);
    waitfnc(W); //aufrufen nicht neu deklarieren
    FreeLibrary(h);    
}

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1309993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309993</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 20 Jun 2007 14:50:14 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Wed, 20 Jun 2007 14:53:19 GMT]]></title><description><![CDATA[<p>Ich denke mal, lt. Tut wolltest du so etwas im *.h schreiben, nur halt angepasst an deine Funktion:</p>
<blockquote>
<p>typedef int TAddVals(int, int ); //Funktionszeigertyp. In diesem Fall hätte man auch einen Typen</p>
<p>int AddVals(int x, int y); //Schnittstellen-Funktion.</p>
</blockquote>
<p>edit:<br />
Erstaunlich, wie lange ich brauche, um in einem einzigen Tut nachzuschlagen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1309994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1309994</guid><dc:creator><![CDATA[SilentSurfer]]></dc:creator><pubDate>Wed, 20 Jun 2007 14:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Thu, 21 Jun 2007 11:18:56 GMT]]></title><description><![CDATA[<p>Danke für Eure Tips!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a>:<br />
* Jaja, dieses kleine böse &quot;Transponier'-Zeichen&quot; (sprich T)... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
* Die Variable hab' ich nun besser &quot;WaitAdr&quot; genannt, führt eindeutig zu weniger Verwirrungen.</p>
<p>Und dann hatte ich wohl noch in Import.h / ~.cpp Deklaration der Schnittstellen-Fkt. und Aufruf der Dll-Fkt. vertauscht... perfekt ist das Chaos! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Außerdem hätte mir ruhig mal jemand den Hinweis geben können, dass ich in Import die windows.h includieren muss... <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="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Habe fertig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310576</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Thu, 21 Jun 2007 11:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Thu, 21 Jun 2007 11:22:01 GMT]]></title><description><![CDATA[<p>Darauf hättest du aufgrund der Fehlermeldungen ja auch selber kommen können. Ohne windows.h kein LoadLibrary, HINSTANCE etc. <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/1310577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310577</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 21 Jun 2007 11:22:01 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamische DLL - kleiner Fehler nach Tutorial on Thu, 21 Jun 2007 11:27:56 GMT]]></title><description><![CDATA[<p>Scho recht,</p>
<p>nur wenn ich nach oben (Eröffnungs-Post) schaue, seh' ich bloß eine Fehlermeldung. <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="😞"
    /><br />
Das dem Compiler HINSTANCE, LoadLibrary etc nicht bekannt sind, wollte er mir erst heute sagen, nachdem er schön ausgeschlafen hatte und besser gelaunt war <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Das war jetzt aber nicht wirklich ne Kritik von mir, scheinbar hast Du's ja so verstanden... Darauf kann man wirklich allein kommen wenn's soweit ist! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310582</guid><dc:creator><![CDATA[Kolumbus]]></dc:creator><pubDate>Thu, 21 Jun 2007 11:27:56 GMT</pubDate></item></channel></rss>