<?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:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag]]></title><description><![CDATA[<p>Hallo allerseits!</p>
<p>Ein paar Variablen, die bisher global in einem namespace lagen, möchte ich jetzt zu Membervariablen machen.</p>
<p>Allerdings bekomme ich dabei immer wieder LNK2201 Error, woran könnte das liegen und wie kann ich es vermeiden?</p>
<p>Vorher (funktionierte alles):</p>
<pre><code class="language-cpp">//C3DFenster.cpp:
#include &quot;C3DFenster.h&quot;

namespace ns_3dfenster 
{
...
 	LPDIRECT3D9             g_pD3D       = NULL; // Used to create the D3DDevice
 	LPDIRECT3DDEVICE9       g_pD3DDevice = NULL; // Our rendering device
 	LPDIRECT3DVERTEXBUFFER9 g_pVB        = NULL; // Buffer to hold vertices
 	LPDIRECT3DVERTEXBUFFER9 g_pVBar[2000]; // Bufferarray to hold vertices 
...}
using namespace ns_3dfenster;
....
</code></pre>
<p>nachher:</p>
<pre><code class="language-cpp">//C3DFenster.h
class C3DFenster
{
....
private:
	static LPDIRECT3D9             mps_pD3D; //       = NULL; // Used to create the D3DDevice
	static LPDIRECT3DDEVICE9       mps_pD3DDevice; // = NULL; // Our rendering device
	static LPDIRECT3DVERTEXBUFFER9 mps_pVB; //        = NULL; // Buffer to hold vertices
	static LPDIRECT3DVERTEXBUFFER9 mps_pVBar[2000]; // Bufferarray to hold vertices 
};
</code></pre>
<p>führt zu:</p>
<blockquote>
<p>C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3D9 * C3DFenster::mps_pD3D&quot; (?mps_pD3D@C3DFenster@@0PAUIDirect3D9@@A)<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DDevice9 * C3DFenster::mps_pD3DDevice&quot; (?mps_pD3DDevice@C3DFenster@@0PAUIDirect3DDevice9@@A)<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DVertexBuffer9 * C3DFenster::mps_pVB&quot; (?mps_pVB@C3DFenster@@0PAUIDirect3DVertexBuffer9@@A)<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DVertexBuffer9 * * C3DFenster::mps_pVBar&quot; (?mps_pVBar@C3DFenster@@0PAPAUIDirect3DVertexBuffer9@@A)<br />
Strukturen.exe : fatal error LNK1120: 4 unresolved externals</p>
</blockquote>
<p>Wie man sieht, habe ich ich die Variablen auch schon umbenannt (was mir früher bei manchen LNK Error nützlich war...), aber das brachte hier nichts.<br />
Außerdem habe ich auch alle &quot;Release&quot; und &quot;Debug&quot; Verzeichnisse und somit alle *.obj Dateien gelöscht.</p>
<p>Hat jemand noch eine Idee, woran das also liegen könnte?</p>
<p>Danke und Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157577/gelöst-lnk-2001-error-nach-quot-umzug-quot-von-variablen-von-cpp-nach-header-mittlerweile-offtopic-directx-frag</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157577.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Aug 2006 15:49:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 18:36:21 GMT]]></title><description><![CDATA[<p>Hallo allerseits!</p>
<p>Ein paar Variablen, die bisher global in einem namespace lagen, möchte ich jetzt zu Membervariablen machen.</p>
<p>Allerdings bekomme ich dabei immer wieder LNK2201 Error, woran könnte das liegen und wie kann ich es vermeiden?</p>
<p>Vorher (funktionierte alles):</p>
<pre><code class="language-cpp">//C3DFenster.cpp:
#include &quot;C3DFenster.h&quot;

namespace ns_3dfenster 
{
...
 	LPDIRECT3D9             g_pD3D       = NULL; // Used to create the D3DDevice
 	LPDIRECT3DDEVICE9       g_pD3DDevice = NULL; // Our rendering device
 	LPDIRECT3DVERTEXBUFFER9 g_pVB        = NULL; // Buffer to hold vertices
 	LPDIRECT3DVERTEXBUFFER9 g_pVBar[2000]; // Bufferarray to hold vertices 
...}
using namespace ns_3dfenster;
....
</code></pre>
<p>nachher:</p>
<pre><code class="language-cpp">//C3DFenster.h
class C3DFenster
{
....
private:
	static LPDIRECT3D9             mps_pD3D; //       = NULL; // Used to create the D3DDevice
	static LPDIRECT3DDEVICE9       mps_pD3DDevice; // = NULL; // Our rendering device
	static LPDIRECT3DVERTEXBUFFER9 mps_pVB; //        = NULL; // Buffer to hold vertices
	static LPDIRECT3DVERTEXBUFFER9 mps_pVBar[2000]; // Bufferarray to hold vertices 
};
</code></pre>
<p>führt zu:</p>
<blockquote>
<p>C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3D9 * C3DFenster::mps_pD3D&quot; (?mps_pD3D@C3DFenster@@0PAUIDirect3D9@@A)<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DDevice9 * C3DFenster::mps_pD3DDevice&quot; (?mps_pD3DDevice@C3DFenster@@0PAUIDirect3DDevice9@@A)<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DVertexBuffer9 * C3DFenster::mps_pVB&quot; (?mps_pVB@C3DFenster@@0PAUIDirect3DVertexBuffer9@@A)<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DVertexBuffer9 * * C3DFenster::mps_pVBar&quot; (?mps_pVBar@C3DFenster@@0PAPAUIDirect3DVertexBuffer9@@A)<br />
Strukturen.exe : fatal error LNK1120: 4 unresolved externals</p>
</blockquote>
<p>Wie man sieht, habe ich ich die Variablen auch schon umbenannt (was mir früher bei manchen LNK Error nützlich war...), aber das brachte hier nichts.<br />
Außerdem habe ich auch alle &quot;Release&quot; und &quot;Debug&quot; Verzeichnisse und somit alle *.obj Dateien gelöscht.</p>
<p>Hat jemand noch eine Idee, woran das also liegen könnte?</p>
<p>Danke und Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125480</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Mon, 28 Aug 2006 18:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 16:20:40 GMT]]></title><description><![CDATA[<p>Solltest du mit MS Visual studion arbeiten, kann ich dir schon mal sagen, dass manche LNK fehler ab und zu aus dem nichts auftauchen, dann: &quot;Bereinigen&quot;, und &quot;alles Neucompilieren&quot;, dann sindie weg... Mich hats !_so_! n klumpen von nervenzellen gekostet, das glaubtma garnich <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>hier ists aber nicht der fall, da müssen deine statischen variablen nochma ausserhalb der klasse deklariert-definiert werden, also in etwa so:</p>
<pre><code class="language-cpp">class C3DFenster{

//deine statischen vars

};

//immer noch im header, aber ausserhalb der klassendeklaration:

LPDIRECT3D9 C3DFenster::g_pD3D=NULL;
</code></pre>
<p>wenndu deine statischen variablen draussen noma deklariert hast, müssn die fehler weg sein</p>
<p>mfg andrey</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125498</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sun, 27 Aug 2006 16:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 16:17:34 GMT]]></title><description><![CDATA[<p>Ausserdem.... khe khe... hat zwar nix mehr direkt mit c++ zu tun, aber... meine fresse... 2000 VertexBuffer ???? Wozu brauchste denn SOOOO VIEEELE? Hast du bei ebay grad ein NASA supercomputer ersteigert? <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="😃"
    /> verkaufen die vielleicht noch welche? Ich will auch einen haben!!!<br />
Nur so zur info: alle modelle sollten eigentlich mehr oder weniger in einen vertexbuffer geladen werden, dann kannst du mit dem indexbuffer nur auf das teil zugreifen, das du grade brauchst... kein programm braucht 2000 vertex buffer, ich schwör's <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1125502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125502</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sun, 27 Aug 2006 16:17:34 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 16:32:42 GMT]]></title><description><![CDATA[<p>Danke, das klappte aber nicht... <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>Andrey schrieb:</p>
<blockquote>
<p>wenndu deine statischen variablen draussen noma deklariert hast, müssn die fehler weg sein</p>
</blockquote>
<p>Ich machte also:</p>
<pre><code class="language-cpp">//C3DFenster.h
class C3DFenster
{
....
private:
	static LPDIRECT3D9             mps_pD3D; //       = NULL; // Used to create the D3DDevice
	static LPDIRECT3DDEVICE9       mps_pD3DDevice; // = NULL; // Our rendering device
	static LPDIRECT3DVERTEXBUFFER9 mps_pVB; //        = NULL; // Buffer to hold vertices
	static LPDIRECT3DVERTEXBUFFER9 mps_pVBar[2000]; // Bufferarray to hold vertices (gemessen)

};

LPDIRECT3D9 C3DFenster::mps_pD3D = NULL;
LPDIRECT3DDEVICE9 C3DFenster::mps_pD3DDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 C3DFenster::mps_pVB = NULL;
</code></pre>
<p>(das Array brauchte früher ja auch keine Initialisierung, daher ließ ich das hier weg...)<br />
und die LNK 2001 Errors verwandelten sich in LNK 2005 Errors:</p>
<blockquote>
<p>stdafx.obj : error LNK2005: &quot;private: static struct IDirect3D9 * C3DFenster::mps_pD3D&quot; (?mps_pD3D@C3DFenster@@0PAUIDirect3D9@@A) already defined in C3DFenster.obj<br />
stdafx.obj : error LNK2005: &quot;private: static struct IDirect3DVertexBuffer9 * C3DFenster::mps_pVB&quot; (?mps_pVB@C3DFenster@@0PAUIDirect3DVertexBuffer9@@A) already defined in C3DFenster.obj<br />
stdafx.obj : error LNK2005: &quot;private: static struct IDirect3DDevice9 * C3DFenster::mps_pD3DDevice&quot; (?mps_pD3DDevice@C3DFenster@@0PAUIDirect3DDevice9@@A) already defined in C3DFenster.obj<br />
C3DFenster.obj : error LNK2001: unresolved external symbol &quot;private: static struct IDirect3DVertexBuffer9 * * C3DFenster::mps_pVBar&quot; (?mps_pVBar@C3DFenster@@0PAPAUIDirect3DVertexBuffer9@@A)</p>
</blockquote>
<p>umbennenen (bracht mir manchmal was bei LNK 2005...) brachte auch keine Besserung. <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>Und zum Bufferarray:<br />
Das, was ich darstellen will, paßt nicht in einen Buffer, das weiß ich bereits.<br />
Und die 2000 sind reiner Vorrrat: Werden die nicht benötigt, brauchen die auch quasi keinen Speicher. Das Programm braucht jedenfalls eine vernünftige Speichermenge.</p>
<p>Gruß,<br />
Dong</p>
<p>P.S.:<br />
Ach ja: Clean und rebuild brachten auch nichts...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125524</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sun, 27 Aug 2006 16:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 16:56:12 GMT]]></title><description><![CDATA[<p>Ich habe gerade Testweise eine neue Klasse (mit gleichen Variablen und Funktionen) angelegt, dort verschwinden die LNK2001 Error tatsächlich mit der definition außerhalb der Klasse, und es entstehen auch keine neuen LNK2005 Error.</p>
<p>An sich war Dein Tipp wohl also richtig, das Problem ist vielleich eher eine verkorkste Klasse....</p>
<p>Danke,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125556</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sun, 27 Aug 2006 16:56:12 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 17:08:56 GMT]]></title><description><![CDATA[<p>dong schrieb:</p>
<blockquote>
<p>Ich habe gerade Testweise eine neue Klasse (mit gleichen Variablen und Funktionen) angelegt, dort verschwinden die LNK2001 Error tatsächlich mit der definition außerhalb der Klasse, und es entstehen auch keine neuen LNK2005 Error.</p>
</blockquote>
<p>...allerdings nur solange, wie diese Klasse nicht benutzt wird.<br />
Wird sie dann benutzt, dass gibt es wieder diese LNK2005 Error... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1125565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125565</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sun, 27 Aug 2006 17:08:56 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 17:13:00 GMT]]></title><description><![CDATA[<p>Die Definitionen gehören auch in <strong>eine</strong> Implementierungsdatei, wenn die im Header stehen sind sie in jeder Compilierungs-Einheit, die den Header inkludiert vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125569</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 27 Aug 2006 17:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 17:31:02 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Die Definitionen gehören auch in <strong>eine</strong> Implementierungsdatei, wenn die im Header stehen sind sie in jeder Compilierungs-Einheit, die den Header inkludiert vorhanden.</p>
</blockquote>
<p>Ah ja! (Ich dachte, <em>#pragma once</em>) würde mehrfache Header-Einbindung verhindern.</p>
<p>Aber stimmt tatsächlich:<br />
Mit der Definition in der .cpp Datei statt im Header ist das wunderbar. <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="🙂"
    /> Danke!<br />
<em>(Kam mir bisher komisch vor, da so &quot;nackt&quot; außerhalb von Funktionen oder so eine Definition hinzuschreiben....)</em></p>
<p>Nur ein Problem habe ich noch:<br />
Wie definiere ich das Array? Ne <em>for</em> Schleife funktionierte jedenfalls nicht <em>(Syntax Error: for, das darf wohl echt nicht so nackt stehen)</em>....</p>
<p>Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125592</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sun, 27 Aug 2006 17:31:02 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 17:38:46 GMT]]></title><description><![CDATA[<p>dong schrieb:</p>
<blockquote>
<p>Nur ein Problem habe ich noch:<br />
Wie definiere ich das Array? Ne <em>for</em> Schleife funktionierte jedenfalls nicht ...</p>
</blockquote>
<p>Ich hab's, so:<br />
LPDIRECT3DVERTEXBUFFER9 C3DFenster::mprivatestat_pVBar[2000] = {0};</p>
<p>Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125603</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Sun, 27 Aug 2006 17:38:46 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 18:38:00 GMT]]></title><description><![CDATA[<p>Solche konstruktionen um das ganze code in jedem header erspart dir immer die mehrfachdeklarationen und mehrfachdefinitionen:</p>
<pre><code class="language-cpp">#ifndef C3DFENSTER_HPP
#define C3DFENSTER_HPP

//dein code

#endif
</code></pre>
<p>das klappt 100% immer. ich bau das sicherheitshalber bereits in jede datei ein, schaden kann's nicht...</p>
<p><strong>Jetzt ma ne ganz andere geschichte...</strong><br />
zu den 2000 vertex buffern...</p>
<p>IDirect3DVertexBuffer9 Objekte sind schnittstellen, die von IDirect3D9 erzeugt werden. Die werden gebraucht, um vertex-daten direkt im RAM der grafikkarte zu speichern, weil von dort der zugriff viel schneller erfolgen kann. Beim sperren eines vertexbuffers bekommst du ein Array zu verfügung, in den du deine vertices reinkopieren kannst. Die länge dieses arrays kannst du vorher angeben: ob du da hundert oder tausend vertices reinkopieren willst, ist egal, du brauchst nur eine einzige IDirect3DVertexBuffer9 schnittstelle.</p>
<p>Ausser natürlich, du willst da mehr als 2^32 Vertices reinkopieren, weil dann der IndexBuffer nicht mehr &quot;hochauflösend&quot; genug ist.<br />
dann hättest du aber ein echtes hardcoreproblem... 2^32 sind 4294967296 vertices, für jedes brauchst du sagen wir mal 28Byte, dann brauchst du schon für einen einzigen vertexbuffer 2^32*28byte=114688 MByte, multipliziert mit 2000 sind es 224000 GB! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Und das kommt mir ein klitzekleines bisschen verdächtig vor^^ (*rofl*)</p>
<p>Also jetzt mal raus mit der sprache: WO HAST DU EINE GRAFIKKARTE MIT 250000 GB RAM AUFGETRIEBEN????? <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1125652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125652</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sun, 27 Aug 2006 18:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 18:50:38 GMT]]></title><description><![CDATA[<p>Andrey schrieb:</p>
<blockquote>
<p>Solche konstruktionen um das ganze code in jedem header erspart dir immer die mehrfachdeklarationen und mehrfachdefinitionen:</p>
</blockquote>
<p>Falsch, die schützen genausowenig wie #pragma once for Mehrfachdefinitionen in mehreren Objektdateien.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125662</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 27 Aug 2006 18:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 21:11:55 GMT]]></title><description><![CDATA[<p>warum klappts dann in meinen programmen?<br />
Obwohl... hm... seltsam... muss ich noch nachschauen, evtl möglich, dass es dann doch nichts bringt <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="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125755</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Sun, 27 Aug 2006 21:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Sun, 27 Aug 2006 21:33:57 GMT]]></title><description><![CDATA[<p>Versteh mich nicht falsch. Include-Guards (alternativ #pragma once) sind wichtig, um beim compilieren <strong>einer</strong> Datei rekursive und/oder mehrfache Includes derselben Datei zu vermeiden. Über mehrere Compilierungseinheiten hinweg bringen sie allerdings relativ wenig <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125772</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 27 Aug 2006 21:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 08:12:46 GMT]]></title><description><![CDATA[<p>dong schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Die Definitionen gehören auch in <strong>eine</strong> Implementierungsdatei, wenn die im Header stehen sind sie in jeder Compilierungs-Einheit, die den Header inkludiert vorhanden.</p>
</blockquote>
<p>Ah ja! (Ich dachte, <em>#pragma once</em>) würde mehrfache Header-Einbindung verhindern.</p>
</blockquote>
<p>&quot;#pragma once&quot; verhindert (genau wie Andrey's Konstruktion) nur davor, den Header mehrfach in EINER Übersetzungseinheit einzubinden. Der Linker sieht davon überhaupt nichts mehr (genau genommen sieht noch nicht einmal der Compiler etwas von diesen Konstruktionen, da die vom Präprozessor verarbeitet werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1125902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1125902</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 28 Aug 2006 08:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 10:33:59 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a> &amp; CStoll:</p>
<p>Danke, ich habe es glaube ich hoffentlich verstanden... <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>
<p>Dazu:</p>
<p>Andrey schrieb:</p>
<blockquote>
<p><strong>Jetzt ma ne ganz andere geschichte...</strong><br />
zu den 2000 vertex buffern...</p>
<p>IDirect3DVertexBuffer9 Objekte sind schnittstellen, die von IDirect3D9 erzeugt werden. Die werden gebraucht, um vertex-daten direkt im RAM der grafikkarte zu speichern, weil von dort der zugriff viel schneller erfolgen kann. Beim sperren eines vertexbuffers bekommst du ein Array zu verfügung, in den du deine vertices reinkopieren kannst. Die länge dieses arrays kannst du vorher angeben: ob du da hundert oder tausend vertices reinkopieren willst, ist egal, du brauchst nur eine einzige IDirect3DVertexBuffer9 schnittstelle.</p>
<p>Ausser natürlich, du willst da mehr als 2^32 Vertices reinkopieren, weil dann der IndexBuffer nicht mehr &quot;hochauflösend&quot; genug ist.<br />
dann hättest du aber ein echtes hardcoreproblem... 2^32 sind 4294967296 vertices, für jedes brauchst du sagen wir mal 28Byte, dann brauchst du schon für einen einzigen vertexbuffer 2^32*28byte=114688 MByte, multipliziert mit 2000 sind es 224000 GB! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Und das kommt mir ein klitzekleines bisschen verdächtig vor^^ (*rofl*)</p>
<p>Also jetzt mal raus mit der sprache: WO HAST DU EINE GRAFIKKARTE MIT 250000 GB RAM AUFGETRIEBEN????? <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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="😃"
    /> <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>
</blockquote>
<p>Ich hatte anfnags tatsächlich Probleme mit nur einem Puffer, siehe in <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-150717-and-postdays-is-0-and-postorder-is-asc-and-start-is-10.html" rel="nofollow">diesem Thread</a>. Dort wurde mir auch dazu geraten, mehrere Puffer anzulegen.</p>
<p>Erscheint wohl wirklich etwas oversized, aber ich wählte diese große Größe aus praktischen Gründen:<br />
Ein ganzes Koordinatengittersystem paßt nicht in einen Puffer, die Zuordnung zu Puffern soll möglichst systematisch sein<br />
--&gt; Ein Puffer für jede Zeile.</p>
<p>Genaugenommen so:</p>
<pre><code class="language-cpp">HRESULT C3DFenster::fuellePuffer()
{
	CUSTOMVERTEX groessenmasstab[1]; // wird nur für den sizeof Operator weiter unten benötigt, der mit den Zeigern nicht funktioniert.
	VOID* pVertices;

	//schreibe aktuelle Position und Zoom in den Zwischenspeicher:
	g_xstart_buffered = m_xstart;
	g_ystart_buffered = m_ystart;
	g_fzoom_buffered = m_fzoom;
	g_fzskal_buffered = *g_fzskal;

	// Erzeuge den Vertex Puffer, falls noch nicht vorhanden
	if (b_bereit == false) this-&gt;bereiteVariablenVor();

for (int j = 0; j &lt; this-&gt;yBloe3D; j++)
{
	punkte[0].x =  xOffset; 
	punkte[0].y =  yStep * j + yOffset + yStep;
	punkte[0].z =  zskal(m_fwert[xpos(0)][ypos(j)]); 
	punkte[0].color = farbeSand(m_fwert[xpos(0)][ypos(j)]);
	for (int i = 0; i &lt; this-&gt;xBloe3D; i++)
    {
		punkte[2* i + 1].x =  xStep * i + xOffset; 
		punkte[2* i + 1].y =  yStep * j + yOffset; 
		punkte[2* i + 1].z =  zskal(m_fwert[xpos(i)][ypos(j)]); 
		punkte[2* i + 1].color = farbeSand(m_fwert[xpos(i)][ypos(j)]);
		punkte[2* i + 2].x =  xStep * i + xOffset + xStep; 
		punkte[2* i + 2].y =  yStep * j + yOffset + yStep;
		punkte[2* i + 2].z =  zskal(m_fwert[xpos(i+1)][ypos(j+1)]); 
		punkte[2* i + 2].color = farbeSand(m_fwert[xpos(i+1)][ypos(j+1)]);
   }
	punkte[2* this-&gt;xBloe3D + 1].x =  xStep * (this-&gt;xBloe3D - 1) + xOffset + xStep; 
	punkte[2* this-&gt;xBloe3D + 1].y =  yStep * j + yOffset; 
	punkte[2* this-&gt;xBloe3D + 1].z =  zskal(m_fwert[xpos(this-&gt;xBloe3D)][ypos(j)]); 
	punkte[2* this-&gt;xBloe3D + 1].color = farbeSand(m_fwert[xpos(this-&gt;xBloe3D)][ypos(j)]);

	// Fill the vertex buffer # j
    if( FAILED( g_pVBar[j]-&gt;Lock( 0, (2* this-&gt;xBloe3D + 2) * sizeof(groessenmasstab), (void**)&amp;pVertices, 0 ) ) )
        return E_FAIL;
    memcpy( pVertices, punkte, (2* this-&gt;xBloe3D + 2) * sizeof(groessenmasstab) );
    g_pVBar[j]-&gt;Unlock();
}

	return S_OK;
}
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">HRESULT C3DFenster::bereiteVariablenVor(void)
{
	b_bereit = true; // An dieser Stelle, da ja noch etwas schiefgehen kann.
	//MessageBox(NULL,L&quot;Puffererzeugung&quot;,NULL,NULL);

	//Anlegen der Variablen für die Punktmenge:
	punkte = new CUSTOMVERTEX[(2* this-&gt;xBloe3D + 2)];

	//Erzeugen der Graphikpuffer:
	for (int j = 0; j &lt; this-&gt;yBloe3D; j++)
	{
		// Create the vertex buffer # j
		if( FAILED( g_pd3dDevice-&gt;CreateVertexBuffer( (2* this-&gt;xBloe3D + 2) *sizeof(CUSTOMVERTEX),
				                                      0, D3DFVF_CUSTOMVERTEX,
						                              D3DPOOL_DEFAULT, &amp;g_pVBar[j], NULL ) ) )
		{
			b_bereit = false;
			return E_FAIL;
		}
	}
	return S_OK;
}
</code></pre>
<p>Die Anwendung braucht dabei nie mehr als 16MB RAM, ich denke, das ist akzeptabel.</p>
<p>Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126004</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Mon, 28 Aug 2006 10:33:59 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 16:37:03 GMT]]></title><description><![CDATA[<p>hmmm.... hab ma ganz kurz in den anderen thread reingeschaut, und eigentlich wundert mcih schon, dass in einen buffer nicht mehr als ca. 20000 vertices reinpassen, denn wozu braucht man dann in dem fall 32bit Indexbuffer, mit dem man über 4000000000 vertices adressieren kann? und überhaupt... was zum henker heisst denn jetzt &quot; f'`8k &quot; ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126291</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Mon, 28 Aug 2006 16:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 17:23:15 GMT]]></title><description><![CDATA[<p>Nichts. TGGC's Tastatur ist einfach nur kaputt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126324</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 28 Aug 2006 17:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 18:00:55 GMT]]></title><description><![CDATA[<p>Das bleibt wohl für immer ein geheimnis, für alle ausser TGGC^^ :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126344</guid><dc:creator><![CDATA[-Andrey]]></dc:creator><pubDate>Mon, 28 Aug 2006 18:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Mon, 28 Aug 2006 18:34:57 GMT]]></title><description><![CDATA[<p>Andrey schrieb:</p>
<blockquote>
<p>hmmm.... hab ma ganz kurz in den anderen thread reingeschaut, und eigentlich wundert mcih schon, dass in einen buffer nicht mehr als ca. 20000 vertices reinpassen, denn wozu braucht man dann in dem fall 32bit Indexbuffer, mit dem man über 4000000000 vertices adressieren kann?</p>
</blockquote>
<p>Ja, das mit der Umstellung auf 32bit habe ich auch mal gelesen, allerdings nur für <em>meshes</em>, nicht für <em>vertices</em>.<br />
Ich weiß aber leider nicht mehr, wo man das einstellen konnte, war glaube ich eine Device Eigenschft.</p>
<p>Gruß,<br />
Dong</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1126374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1126374</guid><dc:creator><![CDATA[dong]]></dc:creator><pubDate>Mon, 28 Aug 2006 18:34:57 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst:] LNK 2001 Error nach &amp;quot;Umzug&amp;quot; von Variablen von .cpp nach Header - mittlerweile OffTopic (DirectX Frag on Fri, 15 Sep 2006 17:18:13 GMT]]></title><description><![CDATA[<p>Andrey schrieb:</p>
<blockquote>
<p>was zum henker heisst denn jetzt &quot; f'`8k &quot; ???</p>
</blockquote>
<p><a href="http://www.games-net.de/hosted/tggc/trash/serious.gif" rel="nofollow">www.games-net.de/hosted/tggc/trash/serious.gif</a> f'`8k</p>
<p>Gruß, TGGC (<a href="http://www.games-net.de/hosted/tggc" rel="nofollow">\-/ returns</a>)[/quote]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138100</guid><dc:creator><![CDATA[TGGC__work]]></dc:creator><pubDate>Fri, 15 Sep 2006 17:18:13 GMT</pubDate></item></channel></rss>