<?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[(Gelöst) Mit Pointer von Struktur in DLL Methode aud Struktur zugreifen]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine kleine Anwendung geschrieben die im Hauptprogramm eine Struktur erstellt, mit Datenfühlt und einen Pointer auf die Struktur stellt.<br />
Die Anwendung soll dann eine Methode in einer selbsterstellten DLL aufrufen, welche mit hilfe des Pointers auf die Daten der Struktur zugreifen soll.</p>
<p>Wie man das macht wenn Methode und Struktur in einem Projekt sind habe ich schon heraus gefunden. Ich erhalte jegendlich die fehler Meldung:</p>
<pre><code>Error C2664: 'Unmanaged_Code::Unmanaged_Class::Change_Struct': Konvertierung des Parameters 1 von 'struktur_layout *' in 'Unmanaged_Code::struktur_layout_in_dll *' nicht möglich
</code></pre>
<p>Soweit ich dies verstehe soll ich eine Pointer übergeben aber es ist doch schon ein Pointer den ich weiterleiten möchte??</p>
<p>Kann mir jemand bitte sagen welchen fehler ich mache?</p>
<p>Hier mein bisheriger Quellcode:</p>
<pre><code class="language-cpp">/* ****************************************
 * Konsolen Anwendung für Unamanged C++
 * als Win32 Aplikation, zum überprüfen
 * von C++ code und Lernen von C++
 * **************************************** */

#pragma once //Quellcode wird nur einmal Kompiliert

#include &lt;iostream&gt; //Input / Output Streams

#include &quot;Unmanaged.h&quot; //Headerdatei aus der DLL

/* ****************************************
 * Verwendete Namespaces
 * **************************************** */
using namespace std; //std Namespace von &lt;iostream&gt; verwenden

/* ******************
 * Struktur Festlegen
 * ****************** */
struct struktur_layout { // Struktur Festlegen 
	int int_Zahl;
	double dbl_Zahl;
	std::string str_Text;
};

//Strukttur &lt;--&gt; Zeiger Test Funktion
void Struktur_Pointer_Test(struct struktur_layout *);

/* ****************************************
 * Hauptfunktion der Win32 Konsolen
 * Anwendung.
 * **************************************** */
int main()
{
	//Variabeln Deklaraion
	//********************
	int programmende;
	double a = 7.4;
	int b = 99;

	int int_wert = 5;
	double dbl_wert = 10;
	std::string str_satz = &quot;dies ist ein Test String.&quot;;

	//Struktur verändern über DLL
	//***************************

	struktur_layout struktur, *struktur_pointer; //Neue Struktur mit Pointer Initzialisieren
	struktur_pointer = &amp;struktur; //Adresse der Struktur an Pointer geben
	struktur.int_Zahl = 10; //Struktur mit Daten befühlen
	struktur.dbl_Zahl = 1.1;
	struktur.str_Text = &quot;das ist der start String&quot;;

	//Struktur über DLL verändern
	//Unmanaged_Code::Unmanaged_Class::Change_String(struktur_pointer);

	//Ausgabe der Struktur
	cout &lt;&lt; &quot;Vor Änderungen der dll: Struct Int Zahl: &quot; &lt;&lt; struktur.int_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Vor Änderungen der dll: Struct Double Zahl: &quot; &lt;&lt; struktur.dbl_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Vor Änderungen der dll: Struct String Satz: &quot; &lt;&lt; struktur.str_Text &lt;&lt; endl;

	//Struktur_Pointer_Test(struktur_pointer); //Testfunktion geht
	Unmanaged_Code::Unmanaged_Class::Change_Struct(struktur_pointer);
	//Aufruf der Methode in der DLL leider funktioniert übergabe des Pointer nicht

	//Ausgabe der Struktur
	cout &lt;&lt; &quot;Nach Änderung der dll: Struct Int Zahl: &quot; &lt;&lt; struktur.int_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Nach Änderung der dll: Struct Double Zahl: &quot; &lt;&lt; struktur.dbl_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Nach Änderung der dll: Struct String Satz: &quot; &lt;&lt; struktur.str_Text &lt;&lt; endl;

	//Ende
	//****
	//Eingabe um Konsole on screen zu halten
	cin &gt;&gt; programmende;
}

//Strukttur &lt;--&gt; Zeiger Test Funktion
void Struktur_Pointer_Test(struct struktur_layout * struktur_pointer)
{
	(*struktur_pointer).int_Zahl = (*struktur_pointer).int_Zahl + 1;
	(*struktur_pointer).dbl_Zahl = (*struktur_pointer).dbl_Zahl * 1.1;
	(*struktur_pointer).str_Text = &quot;Hallo &quot; + (*struktur_pointer).str_Text;
}
</code></pre>
<p>Header meiner DLL Datei:</p>
<pre><code class="language-cpp">/* ****************************************
 * Unmanaged Class (C++ Header)
 * **************************************** */

#pragma once //Quellcode wird nur einmal Kompiliert

#include &lt;string&gt; //Klasse um den Datentype String verwenden zu können

using namespace std; //C++ Standardnamespace

/* ****************************************
 * Prototyp des Namespace und der Klassen
 * **************************************** */
namespace Unmanaged_Code
{
	class Unmanaged_Class
	{
	public:
		//Methoden
		//********
		//struct
		static __declspec(dllexport) void Unmanaged_Class::Change_Struct(struct struktur_layout_in_dll *);
	};
}
</code></pre>
<p>Und Quellcode meiner dll</p>
<pre><code class="language-cpp">/* ****************************************
 * Unmanaged Class (C++ Quellcode)
 * Unmanaged.cpp : Definiert die exportierten Funktionen für die DLL-Anwendung.
 * **************************************** */

/* ****************************************
 * Zusätzliche Klasse
 * **************************************** */
#include &lt;stdexcept&gt;
//#include &quot;stdafx.h&quot;
#include &lt;iostream&gt; //Klasse für ein und Ausgabe
#include &quot;Unmanaged.h&quot; //Header von Unmanaged

using namespace std; //C++ Standardnamespace

/* ****************************************
 * Unmanaged Code Namespace
 * **************************************** */
namespace Unmanaged_Code
{
	/* ****************************************
	 * Methoden zum verändern von Strukturen
	 * **************************************** */

	//Definieren der Struktur
	struct struktur_layout_in_dll {
		int int_Zahl;
		double dbl_Zahl;
		std::string str_Text;
	};

	//Methode zum annehmen, verändern und zurücksenden von Strukturen
	void Unmanaged_Class::Change_Struct(struct struktur_layout_in_dll * struktur_pointer)
	{
		struktur_pointer-&gt;int_Zahl = struktur_pointer-&gt;int_Zahl + 999;
		struktur_pointer-&gt;dbl_Zahl = struktur_pointer-&gt;dbl_Zahl * 100;
		struktur_pointer-&gt;str_Text = &quot;Hey &quot; + struktur_pointer-&gt;str_Text;
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/273797/gelöst-mit-pointer-von-struktur-in-dll-methode-aud-struktur-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 22:38:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273797.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Sep 2010 14:35:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (Gelöst) Mit Pointer von Struktur in DLL Methode aud Struktur zugreifen on Wed, 15 Sep 2010 07:16:28 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine kleine Anwendung geschrieben die im Hauptprogramm eine Struktur erstellt, mit Datenfühlt und einen Pointer auf die Struktur stellt.<br />
Die Anwendung soll dann eine Methode in einer selbsterstellten DLL aufrufen, welche mit hilfe des Pointers auf die Daten der Struktur zugreifen soll.</p>
<p>Wie man das macht wenn Methode und Struktur in einem Projekt sind habe ich schon heraus gefunden. Ich erhalte jegendlich die fehler Meldung:</p>
<pre><code>Error C2664: 'Unmanaged_Code::Unmanaged_Class::Change_Struct': Konvertierung des Parameters 1 von 'struktur_layout *' in 'Unmanaged_Code::struktur_layout_in_dll *' nicht möglich
</code></pre>
<p>Soweit ich dies verstehe soll ich eine Pointer übergeben aber es ist doch schon ein Pointer den ich weiterleiten möchte??</p>
<p>Kann mir jemand bitte sagen welchen fehler ich mache?</p>
<p>Hier mein bisheriger Quellcode:</p>
<pre><code class="language-cpp">/* ****************************************
 * Konsolen Anwendung für Unamanged C++
 * als Win32 Aplikation, zum überprüfen
 * von C++ code und Lernen von C++
 * **************************************** */

#pragma once //Quellcode wird nur einmal Kompiliert

#include &lt;iostream&gt; //Input / Output Streams

#include &quot;Unmanaged.h&quot; //Headerdatei aus der DLL

/* ****************************************
 * Verwendete Namespaces
 * **************************************** */
using namespace std; //std Namespace von &lt;iostream&gt; verwenden

/* ******************
 * Struktur Festlegen
 * ****************** */
struct struktur_layout { // Struktur Festlegen 
	int int_Zahl;
	double dbl_Zahl;
	std::string str_Text;
};

//Strukttur &lt;--&gt; Zeiger Test Funktion
void Struktur_Pointer_Test(struct struktur_layout *);

/* ****************************************
 * Hauptfunktion der Win32 Konsolen
 * Anwendung.
 * **************************************** */
int main()
{
	//Variabeln Deklaraion
	//********************
	int programmende;
	double a = 7.4;
	int b = 99;

	int int_wert = 5;
	double dbl_wert = 10;
	std::string str_satz = &quot;dies ist ein Test String.&quot;;

	//Struktur verändern über DLL
	//***************************

	struktur_layout struktur, *struktur_pointer; //Neue Struktur mit Pointer Initzialisieren
	struktur_pointer = &amp;struktur; //Adresse der Struktur an Pointer geben
	struktur.int_Zahl = 10; //Struktur mit Daten befühlen
	struktur.dbl_Zahl = 1.1;
	struktur.str_Text = &quot;das ist der start String&quot;;

	//Struktur über DLL verändern
	//Unmanaged_Code::Unmanaged_Class::Change_String(struktur_pointer);

	//Ausgabe der Struktur
	cout &lt;&lt; &quot;Vor Änderungen der dll: Struct Int Zahl: &quot; &lt;&lt; struktur.int_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Vor Änderungen der dll: Struct Double Zahl: &quot; &lt;&lt; struktur.dbl_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Vor Änderungen der dll: Struct String Satz: &quot; &lt;&lt; struktur.str_Text &lt;&lt; endl;

	//Struktur_Pointer_Test(struktur_pointer); //Testfunktion geht
	Unmanaged_Code::Unmanaged_Class::Change_Struct(struktur_pointer);
	//Aufruf der Methode in der DLL leider funktioniert übergabe des Pointer nicht

	//Ausgabe der Struktur
	cout &lt;&lt; &quot;Nach Änderung der dll: Struct Int Zahl: &quot; &lt;&lt; struktur.int_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Nach Änderung der dll: Struct Double Zahl: &quot; &lt;&lt; struktur.dbl_Zahl &lt;&lt; endl;
	cout &lt;&lt; &quot;Nach Änderung der dll: Struct String Satz: &quot; &lt;&lt; struktur.str_Text &lt;&lt; endl;

	//Ende
	//****
	//Eingabe um Konsole on screen zu halten
	cin &gt;&gt; programmende;
}

//Strukttur &lt;--&gt; Zeiger Test Funktion
void Struktur_Pointer_Test(struct struktur_layout * struktur_pointer)
{
	(*struktur_pointer).int_Zahl = (*struktur_pointer).int_Zahl + 1;
	(*struktur_pointer).dbl_Zahl = (*struktur_pointer).dbl_Zahl * 1.1;
	(*struktur_pointer).str_Text = &quot;Hallo &quot; + (*struktur_pointer).str_Text;
}
</code></pre>
<p>Header meiner DLL Datei:</p>
<pre><code class="language-cpp">/* ****************************************
 * Unmanaged Class (C++ Header)
 * **************************************** */

#pragma once //Quellcode wird nur einmal Kompiliert

#include &lt;string&gt; //Klasse um den Datentype String verwenden zu können

using namespace std; //C++ Standardnamespace

/* ****************************************
 * Prototyp des Namespace und der Klassen
 * **************************************** */
namespace Unmanaged_Code
{
	class Unmanaged_Class
	{
	public:
		//Methoden
		//********
		//struct
		static __declspec(dllexport) void Unmanaged_Class::Change_Struct(struct struktur_layout_in_dll *);
	};
}
</code></pre>
<p>Und Quellcode meiner dll</p>
<pre><code class="language-cpp">/* ****************************************
 * Unmanaged Class (C++ Quellcode)
 * Unmanaged.cpp : Definiert die exportierten Funktionen für die DLL-Anwendung.
 * **************************************** */

/* ****************************************
 * Zusätzliche Klasse
 * **************************************** */
#include &lt;stdexcept&gt;
//#include &quot;stdafx.h&quot;
#include &lt;iostream&gt; //Klasse für ein und Ausgabe
#include &quot;Unmanaged.h&quot; //Header von Unmanaged

using namespace std; //C++ Standardnamespace

/* ****************************************
 * Unmanaged Code Namespace
 * **************************************** */
namespace Unmanaged_Code
{
	/* ****************************************
	 * Methoden zum verändern von Strukturen
	 * **************************************** */

	//Definieren der Struktur
	struct struktur_layout_in_dll {
		int int_Zahl;
		double dbl_Zahl;
		std::string str_Text;
	};

	//Methode zum annehmen, verändern und zurücksenden von Strukturen
	void Unmanaged_Class::Change_Struct(struct struktur_layout_in_dll * struktur_pointer)
	{
		struktur_pointer-&gt;int_Zahl = struktur_pointer-&gt;int_Zahl + 999;
		struktur_pointer-&gt;dbl_Zahl = struktur_pointer-&gt;dbl_Zahl * 100;
		struktur_pointer-&gt;str_Text = &quot;Hey &quot; + struktur_pointer-&gt;str_Text;
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1952028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952028</guid><dc:creator><![CDATA[Reilsss]]></dc:creator><pubDate>Wed, 15 Sep 2010 07:16:28 GMT</pubDate></item><item><title><![CDATA[Reply to (Gelöst) Mit Pointer von Struktur in DLL Methode aud Struktur zugreifen on Mon, 13 Sep 2010 15:41:54 GMT]]></title><description><![CDATA[<p>Das sagt doch die Fehlermeldung bereits?! Das sind inkompatible Typen.</p>
<p>Die Funktion:</p>
<pre><code>void Unmanaged_Class::Change_Struct(struct struktur_layout_in_dll * struktur_pointer)
</code></pre>
<p>erwartet <code>struktur_layout_in_dll</code> , aber bekommt in Zeile 67 ein <code>struktur_layout struktur</code> .</p>
<p>Was verstehst du daran nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952068</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 13 Sep 2010 15:41:54 GMT</pubDate></item><item><title><![CDATA[Reply to (Gelöst) Mit Pointer von Struktur in DLL Methode aud Struktur zugreifen on Tue, 14 Sep 2010 07:05:29 GMT]]></title><description><![CDATA[<p>Da ich neu in C++ bin dachte ich das wenn ich die beiden Strukturen exakt gleich aufgebaue, das es dann mölich sein würde den Pointer zu übergeben. Dem ist offensichtlich nicht so.<br />
Wenn ich in der dll Datei auf die struktur_layout struktur verweise, kann ich die dll nicht mehr Kompilieren da für die DLL die Struktur des Hauptprogramm zum Zeitpunkt der Kompilierung unbekannt ist. (Soweit ich weis muss ich erst DLL erstellen und dann in Hauptprogramm einbinden.<br />
Es müsste doch aber möglich sein von der dll aus die Struktur des Hauptprogramm verändern zu können in dem man der DLL eine Pointer übergibt, oder muss ich bereits hier ein Marshalling zwischen Hauptprogramm und DLL ausüben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952285</guid><dc:creator><![CDATA[Reilsss]]></dc:creator><pubDate>Tue, 14 Sep 2010 07:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to (Gelöst) Mit Pointer von Struktur in DLL Methode aud Struktur zugreifen on Tue, 14 Sep 2010 07:18:21 GMT]]></title><description><![CDATA[<p>nein, brauchste nicht.</p>
<p>Wenn du deine Struktur im Header definierst und diesen Header in sowohl dll als auch hauptprogramm einbindest, dann kannst du die Struktur in beiden Modulen benutzen. Du musst dann natürlich auch genau diese Struktur nutzen und nicht zwei verschiedene, die nur gleich aufgebaut sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952293</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Tue, 14 Sep 2010 07:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to (Gelöst) Mit Pointer von Struktur in DLL Methode aud Struktur zugreifen on Wed, 15 Sep 2010 07:16:06 GMT]]></title><description><![CDATA[<p>Danke für den Tipp. Nachdem ich die definition der Struktur in den Header der DLL Datei geschrieben habe, und über diesen die Struktur erstelle geht es nun.<br />
Danke nochmal für die schnelle Hilfe! <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/1952787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952787</guid><dc:creator><![CDATA[Reilsss]]></dc:creator><pubDate>Wed, 15 Sep 2010 07:16:06 GMT</pubDate></item></channel></rss>