<?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[LoadLibrary &#x2F; GetProcAddress fuer constructor mit parameter]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine .dll compiliert, die eine Funktion &quot;createModel&quot; exportiert, die einen Pointer des neuen Objekts zurueckliefert:</p>
<pre><code>extern &quot;C&quot; __declspec(dllexport) Controller* __cdecl createModel(int endTime, int timeStep, char* reportName)
{
    return new EtaModel(endTime, timeStep, reportName);
}
</code></pre>
<p>Diese .dll wird so ins main.cpp geladen:</p>
<pre><code>HINSTANCE dll_handle = ::LoadLibrary(TEXT(&quot;EtaModel.dll&quot;));

   controller_factory factory_func = reinterpret_cast&lt;controller_factory&gt;(GetProcAddress(dll_handle, &quot;createModel&quot;));
</code></pre>
<p>Jetzt will ich:</p>
<pre><code>typedef Controller* (__cdecl *controller_factory)();

    Controller* ctrl = factory_func(105560, 600, &quot;ctrl_60.rpt&quot;);
</code></pre>
<p>bekomme aber beim Compilieren:<br />
&quot;too many arguments to function&quot;</p>
<p>Controller* ctrl = factory_func();<br />
wuerde funktionieren.</p>
<p>Wo liegt der Denkfehler, oder kann ich dem constructor in der dll auf diese Weise keine Parameter uebergeben?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325439/loadlibrary-getprocaddress-fuer-constructor-mit-parameter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 14:31:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325439.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 May 2014 10:10:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to LoadLibrary &#x2F; GetProcAddress fuer constructor mit parameter on Fri, 02 May 2014 10:10:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine .dll compiliert, die eine Funktion &quot;createModel&quot; exportiert, die einen Pointer des neuen Objekts zurueckliefert:</p>
<pre><code>extern &quot;C&quot; __declspec(dllexport) Controller* __cdecl createModel(int endTime, int timeStep, char* reportName)
{
    return new EtaModel(endTime, timeStep, reportName);
}
</code></pre>
<p>Diese .dll wird so ins main.cpp geladen:</p>
<pre><code>HINSTANCE dll_handle = ::LoadLibrary(TEXT(&quot;EtaModel.dll&quot;));

   controller_factory factory_func = reinterpret_cast&lt;controller_factory&gt;(GetProcAddress(dll_handle, &quot;createModel&quot;));
</code></pre>
<p>Jetzt will ich:</p>
<pre><code>typedef Controller* (__cdecl *controller_factory)();

    Controller* ctrl = factory_func(105560, 600, &quot;ctrl_60.rpt&quot;);
</code></pre>
<p>bekomme aber beim Compilieren:<br />
&quot;too many arguments to function&quot;</p>
<p>Controller* ctrl = factory_func();<br />
wuerde funktionieren.</p>
<p>Wo liegt der Denkfehler, oder kann ich dem constructor in der dll auf diese Weise keine Parameter uebergeben?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397071</guid><dc:creator><![CDATA[kwurpi]]></dc:creator><pubDate>Fri, 02 May 2014 10:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to LoadLibrary &#x2F; GetProcAddress fuer constructor mit parameter on Fri, 02 May 2014 10:27:11 GMT]]></title><description><![CDATA[<p>Dein Typedef <code>controller_factory</code> passt nicht zu deinem Aufruf von <code>factory_func</code> . Die Signatur deines Typedefs muss der korrekten Signatur entsprechen, d.h. da fehlen die Argumente.</p>
<p><strong>Edit</strong><br />
Konkret:</p>
<pre><code>typedef Controller* (__cdecl *controller_factory)(int,int,char*);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2397076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397076</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 02 May 2014 10:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to LoadLibrary &#x2F; GetProcAddress fuer constructor mit parameter on Fri, 02 May 2014 10:30:33 GMT]]></title><description><![CDATA[<p>In deinem typedef &quot;controller_factory&quot; fehlen die Funktionsargumente.<br />
Das hat nichts mit Konstruktoren zu tun. Der Konstruktor wird dann von deiner exportierten Funktion aufgerufen.</p>
<p>Machs mal so:</p>
<pre><code>typedef Controller* (__cdecl *controller_factory)(int, int, char*);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2397079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397079</guid><dc:creator><![CDATA[illuminator]]></dc:creator><pubDate>Fri, 02 May 2014 10:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to LoadLibrary &#x2F; GetProcAddress fuer constructor mit parameter on Fri, 02 May 2014 10:38:04 GMT]]></title><description><![CDATA[<p>Theta, Illuminator,</p>
<p>genau das war falsch!<br />
Total Super!<br />
Danke<br />
kwurpi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397080</guid><dc:creator><![CDATA[kwurpi]]></dc:creator><pubDate>Fri, 02 May 2014 10:38:04 GMT</pubDate></item></channel></rss>