<?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[Externe DLL Funktion testen]]></title><description><![CDATA[<p>Hallo!</p>
<p>für eine Anbindung einer Waage an eine Warenwirtschaftsprogramm benötige ich eine &quot;einfache&quot; DLL-Datei, die mir die Funktionen einer COMPORT-DLL anspricht. Das Warenwirtschaftssystem übergibt an eine DLL-Funktion immer 2 Parameter - ein vom Typ long und ein vom Typ unsigned char*. Ziel ist es, diese Parameter in ein Format umzuwandeln, was die Funktionen der PORT.DLL lesen kann.</p>
<p>Hier ein Beispiel:<br />
In der PORT.DLL gibt es die Funktion OPENCOMM. Diese erwartet als Parameter einen Parameter-String z.Bsp. &quot;COM1:9600,N,8,0&quot;. Ich benötige jetzt eine DLL, die 2 Parameter erhält und mit dem 2. Parameter die Funktion OPENCOMM aufruft.</p>
<p>Um das Problem zu lösen, habe ich folgendes Skript für Visual Studio 6 erhalten:</p>
<p>extern &quot;C&quot; unsigned char* APIENTRY<br />
XOPENCOMM(long dummy, unsigned char* argument)<br />
{<br />
portDLL = LoadLibrary(&quot;Port.dll&quot;);<br />
OpenCommFunc = (PORTFUNC1)<br />
GetProcAddress(portDLL, &quot;OPENCOMM&quot;);<br />
if (OpenCommFunc)<br />
{<br />
FreeLibrary(portDLL);<br />
return 0;<br />
}<br />
else<br />
{<br />
uReturnVal = OpenCommFunc(argument);<br />
return uReturnVal;<br />
}<br />
}</p>
<p>Jetzt bekomme ich aber keinen Returnwert zurück. Es wird auch keine Fehlermeldung ausgegeben. Kann man über ein C++ testen, ob die Funktion XOPENCOMM überhaupt aufgerufen wird und funktioniert? Da ich ein absoluter Anfänger bei der C++-Programmierung bin, suche ich dringend Jemanden, der mir weiterhelfen kann.</p>
<p>Vielen Dank!<br />
Ina <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/77719/externe-dll-funktion-testen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 03:35:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/77719.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jun 2004 17:10:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Externe DLL Funktion testen on Wed, 23 Jun 2004 17:10:49 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>für eine Anbindung einer Waage an eine Warenwirtschaftsprogramm benötige ich eine &quot;einfache&quot; DLL-Datei, die mir die Funktionen einer COMPORT-DLL anspricht. Das Warenwirtschaftssystem übergibt an eine DLL-Funktion immer 2 Parameter - ein vom Typ long und ein vom Typ unsigned char*. Ziel ist es, diese Parameter in ein Format umzuwandeln, was die Funktionen der PORT.DLL lesen kann.</p>
<p>Hier ein Beispiel:<br />
In der PORT.DLL gibt es die Funktion OPENCOMM. Diese erwartet als Parameter einen Parameter-String z.Bsp. &quot;COM1:9600,N,8,0&quot;. Ich benötige jetzt eine DLL, die 2 Parameter erhält und mit dem 2. Parameter die Funktion OPENCOMM aufruft.</p>
<p>Um das Problem zu lösen, habe ich folgendes Skript für Visual Studio 6 erhalten:</p>
<p>extern &quot;C&quot; unsigned char* APIENTRY<br />
XOPENCOMM(long dummy, unsigned char* argument)<br />
{<br />
portDLL = LoadLibrary(&quot;Port.dll&quot;);<br />
OpenCommFunc = (PORTFUNC1)<br />
GetProcAddress(portDLL, &quot;OPENCOMM&quot;);<br />
if (OpenCommFunc)<br />
{<br />
FreeLibrary(portDLL);<br />
return 0;<br />
}<br />
else<br />
{<br />
uReturnVal = OpenCommFunc(argument);<br />
return uReturnVal;<br />
}<br />
}</p>
<p>Jetzt bekomme ich aber keinen Returnwert zurück. Es wird auch keine Fehlermeldung ausgegeben. Kann man über ein C++ testen, ob die Funktion XOPENCOMM überhaupt aufgerufen wird und funktioniert? Da ich ein absoluter Anfänger bei der C++-Programmierung bin, suche ich dringend Jemanden, der mir weiterhelfen kann.</p>
<p>Vielen Dank!<br />
Ina <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/546607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546607</guid><dc:creator><![CDATA[IFL]]></dc:creator><pubDate>Wed, 23 Jun 2004 17:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Externe DLL Funktion testen on Thu, 24 Jun 2004 05:21:59 GMT]]></title><description><![CDATA[<p>Hallo C++-Profis!</p>
<p>Hat denn Niemand einen Tipp für mich, an wen ich mich wenden könnte?</p>
<p>Verzweifelte Grüße<br />
Ina</p>
]]></description><link>https://www.c-plusplus.net/forum/post/546870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546870</guid><dc:creator><![CDATA[IFL]]></dc:creator><pubDate>Thu, 24 Jun 2004 05:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Externe DLL Funktion testen on Thu, 24 Jun 2004 13:23:11 GMT]]></title><description><![CDATA[<p>Falls Due den Quellcode für Deine DllS hast, würde ich Sie als Debug-Version erstellen. Dann die neuen Dll und Libarys in Dein Projekt kopieren und Dein Projekt noch mal neu kompilieren. Jetzt mal Deine Anwendung debuggen und beim Sprung in die Dll einen breakpoint setzen. Da jetzt Deine Dll als Debug-version vorhanden ist, müßeste Du mit Hilfe der Taste &quot;F11&quot; in dei Dll springen können und dort weiter den Code debuggen können.</p>
<p>Dies funktioniert jedenfalls bei mir, mit dem Entwicklungstool VC++</p>
<p>Hoffe ich konnte Dir weiter helfen.</p>
<p>Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/547200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/547200</guid><dc:creator><![CDATA[Oli_1977]]></dc:creator><pubDate>Thu, 24 Jun 2004 13:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to Externe DLL Funktion testen on Thu, 24 Jun 2004 17:32:22 GMT]]></title><description><![CDATA[<p>Hallo Oli!</p>
<p>Danke für deinen Tipp. Meine DLL funktioniert erst mal. Jetzt habe ich nur noch mit der Port.DLL Probleme, die ich eigentlich ansprechen wollte. Die DLL wird zwar geöffnet, aber beim Zeiger auf eine Funktion (z.Bsp. OPENCOMM) wir als Adresse 0x00000...) angegeben. Sehe ich es richtig, wenn ich behaupte, dass er die Funktion nicht findet? Normalerweise müsste doch eine gültige Zeigeradresse im Debugger kommen, oder? Leider steht mit der Quelltext der DLL :p nicht zur Verfügung.</p>
<p>Gruß<br />
Ina</p>
]]></description><link>https://www.c-plusplus.net/forum/post/547349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/547349</guid><dc:creator><![CDATA[IFL]]></dc:creator><pubDate>Thu, 24 Jun 2004 17:32:22 GMT</pubDate></item><item><title><![CDATA[Reply to Externe DLL Funktion testen on Fri, 25 Jun 2004 05:28:16 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Da hast Du recht. Die Funktion GetProcAdress() gibt eine NULL zurück, wenn sie Fehlgeschlagen ist. Rude danach mal die Funktion GetLastError() auf. Da bekommst Du eine Fehlernummer, die Dir in der Hilfe angibt, was falsch war.</p>
<p>Hoffe es hilft.</p>
<p>Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/547572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/547572</guid><dc:creator><![CDATA[Oli_1977]]></dc:creator><pubDate>Fri, 25 Jun 2004 05:28:16 GMT</pubDate></item></channel></rss>