<?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[DLLs - struct* als Parameter uebergeben]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe folgendes Problem:</p>
<p>Ich habe eine dll geschieben, DIE PER EIGENEM TESTPROGRAMM NACHWEISLICH FUNKTIONIERT.<br />
Ok.<br />
Im Prinzip bietet sie nur eine Funktion an:</p>
<pre><code class="language-cpp">__declspec(dllexport) int blah (struct_type * s);
</code></pre>
<p>wobei</p>
<pre><code class="language-cpp">typedef struct {
int a;
int b;
...} struct_type;
</code></pre>
<p>der Typ des Parameters ist (ca. 20 longs).</p>
<p>Ok. Wie schon gesagt, habe ich ein Testprogrämmchen geschieben, das mit dieser dll wunderbar wie folgt arbeitet:</p>
<pre><code class="language-cpp">__declspec(dllimport) int blah (struct_type * s);
typedef struct {
int a;
int b;
...} struct_type; // das benutzende Programm muss den Typ natürlich auch kennen

int main(){
struct_type local_struct;
int retval = blah( &amp;local_struct );
// jetzt kann mittels local_struct.a etc. auf die in der dll berechneten Werte zugegriffen werden.
}
</code></pre>
<p>Ok. Bis jetzt alles einfach. Jetzt habe ich aber ein in Visual C++ .NET (2003) geschiebenes Programm. Das kann die dll im Prinzip auch nutzen, ABER:</p>
<p>Obwohl der Funktionsaufruf scheinbar wunderbar funktioniert, und auch andere per Parameter übergebene (Eingabe-) Parameter in der dll verwendbar sind, gehen alle Werte, die ich IN DER DLL in den struct reinschreibe, VERLOREN.</p>
<p>Also in der dll</p>
<pre><code class="language-cpp">int blah(struct_type * s){
s-&gt;a = 0815;
}
</code></pre>
<p>kommt nicht in dem .NET-Programm an!</p>
<p><strong>BITTE HELFT MIR, ICH BIN VERZWEIFELT</strong><br />
Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168932/dlls-struct-als-parameter-uebergeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 01:59:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168932.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Dec 2006 19:35:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Fri, 29 Dec 2006 19:35:57 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe folgendes Problem:</p>
<p>Ich habe eine dll geschieben, DIE PER EIGENEM TESTPROGRAMM NACHWEISLICH FUNKTIONIERT.<br />
Ok.<br />
Im Prinzip bietet sie nur eine Funktion an:</p>
<pre><code class="language-cpp">__declspec(dllexport) int blah (struct_type * s);
</code></pre>
<p>wobei</p>
<pre><code class="language-cpp">typedef struct {
int a;
int b;
...} struct_type;
</code></pre>
<p>der Typ des Parameters ist (ca. 20 longs).</p>
<p>Ok. Wie schon gesagt, habe ich ein Testprogrämmchen geschieben, das mit dieser dll wunderbar wie folgt arbeitet:</p>
<pre><code class="language-cpp">__declspec(dllimport) int blah (struct_type * s);
typedef struct {
int a;
int b;
...} struct_type; // das benutzende Programm muss den Typ natürlich auch kennen

int main(){
struct_type local_struct;
int retval = blah( &amp;local_struct );
// jetzt kann mittels local_struct.a etc. auf die in der dll berechneten Werte zugegriffen werden.
}
</code></pre>
<p>Ok. Bis jetzt alles einfach. Jetzt habe ich aber ein in Visual C++ .NET (2003) geschiebenes Programm. Das kann die dll im Prinzip auch nutzen, ABER:</p>
<p>Obwohl der Funktionsaufruf scheinbar wunderbar funktioniert, und auch andere per Parameter übergebene (Eingabe-) Parameter in der dll verwendbar sind, gehen alle Werte, die ich IN DER DLL in den struct reinschreibe, VERLOREN.</p>
<p>Also in der dll</p>
<pre><code class="language-cpp">int blah(struct_type * s){
s-&gt;a = 0815;
}
</code></pre>
<p>kommt nicht in dem .NET-Programm an!</p>
<p><strong>BITTE HELFT MIR, ICH BIN VERZWEIFELT</strong><br />
Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199623</guid><dc:creator><![CDATA[olidem]]></dc:creator><pubDate>Fri, 29 Dec 2006 19:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Fri, 29 Dec 2006 20:12:14 GMT]]></title><description><![CDATA[<p>Wer ruft es denn auf??? Du redest irgendwas von &quot;.NET&quot;!? Wird es aus C# aufgerufen?<br />
Auch solte man IMHO das struct so definieren:</p>
<pre><code class="language-cpp">typedef struct struct_type {
int a;
int b;
...};
</code></pre>
<p>Aber das wird an dem Problem vermutlich nichts ändern...</p>
<p>PS: Falls es doch C++ ist: Stimmt den das packing der Struktur? Ist es also in Deiner DLL gleich wie in dem aufrufenden Programm?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199633</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 29 Dec 2006 20:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Fri, 29 Dec 2006 20:12:03 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Auch solte man IMHO das struct so definieren:</p>
<pre><code class="language-cpp">typedef struct struct_type {
int a;
int b;
...};
</code></pre>
</blockquote>
<pre><code class="language-cpp">typedef struct struct_name {
int a;
int b;
...} struct_type;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199634</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 29 Dec 2006 20:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Fri, 29 Dec 2006 20:17:49 GMT]]></title><description><![CDATA[<p>Wegen dieser totalen Verwirrung mache ich sogar immer:</p>
<pre><code class="language-cpp">typedef struct StructName {
int a;
int b;
...} StructName;
</code></pre>
<p>Da geht man jedem Problem aus dem Weg...</p>
<p>Oder weist Du ohne nachzuschauen, was das folgende bedeutet?</p>
<pre><code class="language-cpp">typedef struct
{
   Name() {}
   int a;
   int b;
} Name;
</code></pre>
<p>Wird &quot;Name()&quot; jetzt als Konstruktor aufgerufen oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199640</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 29 Dec 2006 20:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Fri, 29 Dec 2006 20:24:08 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Wird &quot;Name()&quot; jetzt als Konstruktor aufgerufen oder nicht?</p>
</blockquote>
<p>nö, weil die struct keinen namen hat.<br />
überhaupt finde ich konstruktoren und methoden in structs blöd. dafür würde ich immer 'class' nehmen...<br />
:xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199644</guid><dc:creator><![CDATA[ten]]></dc:creator><pubDate>Fri, 29 Dec 2006 20:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Fri, 29 Dec 2006 21:32:05 GMT]]></title><description><![CDATA[<p>Warum nutzen Leute mit nem C++ Compiler überhaupt noch diese typedef-Variante vom Syntax her???</p>
<p>Mit was für nem Compiler wurde die DLL denn erstellt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199690</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Fri, 29 Dec 2006 21:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to DLLs - struct* als Parameter uebergeben on Sat, 30 Dec 2006 08:30:44 GMT]]></title><description><![CDATA[<p>Die Frage ist auch noch offen: WER verwendet die DLL WIE?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1199770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1199770</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 30 Dec 2006 08:30:44 GMT</pubDate></item></channel></rss>