<?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[Public symbol &#x27;...&#x27; defined in both module]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Problem:<br />
Beim Compilieren einer Sammlung von Steuerelementen die ich programmiert habe<br />
kommen etliche dieser Warnungen, die ich gerne entfernen möchte:</p>
<pre><code class="language-cpp">[Linker Warnung] Public symbol '_g_CAN_Init' defined in both module CANCARD.OBJ and SGG050.OBJ
</code></pre>
<p>ich versteh aber nicht warum die überhaupt kommen. Im Header der CANCARD Klasse<br />
steht folgendes:</p>
<pre><code class="language-cpp">#ifndef CANCardH
#define CANCardH

typedef DWORD (__stdcall *PCAN_Init)(WORD wBTR0BTR1, int CANMsgType);

...
PCAN_Init g_CAN_Init;

...

class PACKAGE TCANCard : public TComponent
{
...
}
#endif
</code></pre>
<p>der Header der Klasse wird auch in SGG050.h eingebunden, dürfte ja aber nicht<br />
mehr verwendet werden wegen dem &quot;#define CANCardH&quot; oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/110755/public-symbol-defined-in-both-module</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 18:03:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/110755.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 May 2005 10:53:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 10:53:17 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Problem:<br />
Beim Compilieren einer Sammlung von Steuerelementen die ich programmiert habe<br />
kommen etliche dieser Warnungen, die ich gerne entfernen möchte:</p>
<pre><code class="language-cpp">[Linker Warnung] Public symbol '_g_CAN_Init' defined in both module CANCARD.OBJ and SGG050.OBJ
</code></pre>
<p>ich versteh aber nicht warum die überhaupt kommen. Im Header der CANCARD Klasse<br />
steht folgendes:</p>
<pre><code class="language-cpp">#ifndef CANCardH
#define CANCardH

typedef DWORD (__stdcall *PCAN_Init)(WORD wBTR0BTR1, int CANMsgType);

...
PCAN_Init g_CAN_Init;

...

class PACKAGE TCANCard : public TComponent
{
...
}
#endif
</code></pre>
<p>der Header der Klasse wird auch in SGG050.h eingebunden, dürfte ja aber nicht<br />
mehr verwendet werden wegen dem &quot;#define CANCardH&quot; oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794888</guid><dc:creator><![CDATA[Acidmrp]]></dc:creator><pubDate>Tue, 24 May 2005 10:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 10:57:11 GMT]]></title><description><![CDATA[<p>Acidmrp schrieb:</p>
<blockquote>
<p>der Header der Klasse wird auch in SGG050.h eingebunden, dürfte ja aber nicht<br />
mehr verwendet werden wegen dem &quot;#define CANCardH&quot; oder?</p>
</blockquote>
<p>Include-Guards schützen dich nur davor, dass dieselbe Headerdatei nicht mehrfach in <strong>eine</strong> Übersetzungseinheit (= .cpp-Datei) eingebunden wird.</p>
<p>Sie können nicht verhindern, dass deine Variable g_CAN_Init in mehrere unterschiedliche Übersetzungseinheiten gelangt. Das passiert in deinem Fall, und darum beschwert sich der Linker (zu Recht). Such mal nach &quot;extern&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794890</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 24 May 2005 10:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 14:20:49 GMT]]></title><description><![CDATA[<p>danke für deine Antwort, dass Problem ist nun klar. Ich hab mir auch etliche<br />
Beiträge durchgelesen, aber eine Lösung hab ich nicht gefunden.</p>
<p>Hat mir noch jemand einen Tip? Ich hab ca. 50 Warnungen und will das eigentlich<br />
nicht so lassen <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/795079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/795079</guid><dc:creator><![CDATA[Acidmrp]]></dc:creator><pubDate>Tue, 24 May 2005 14:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 14:35:46 GMT]]></title><description><![CDATA[<p>versuch mal folgendes :</p>
<pre><code class="language-cpp">static PCAN_Init g_CAN_Init;
</code></pre>
<p>damit hatte das glaubich bei mir mal funktioniert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/795097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/795097</guid><dc:creator><![CDATA[Beliah]]></dc:creator><pubDate>Tue, 24 May 2005 14:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 14:42:15 GMT]]></title><description><![CDATA[<p>Beliah schrieb:</p>
<blockquote>
<p>damit hatte das glaubich bei mir mal funktioniert</p>
</blockquote>
<p>Wenn du mit &quot;funktionieren&quot; meinst, dass es jetzt ein g_CAN_Init pro Übersetzungseinheit gibt, dann glaubst du richtig. Ich vermute aber, das ist hier nicht beabsichtigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/795102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/795102</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 24 May 2005 14:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 18:01:28 GMT]]></title><description><![CDATA[<p>nein das wäre hier nicht beabsichtigt.</p>
<p>Das ganze sieht so aus:</p>
<p>TCANCard ist die Schnittstelle zu verschiedenen CAN Karten (hier Karten<br />
von Vector und PEAK).</p>
<p>SGG050 ist der Sensor fürs ESP, damit wird die Drehrate und Beschleunigung<br />
vom Auto gemessen.</p>
<p>Die Klasse TSGG050 hat einen Zeiger auf TCANCard.</p>
<p>g_CAN_Init &amp; co. verwende ich um dynamisch die Treiber dll's der CAN Karten<br />
zu laden. TSGG050 braucht diese also eigentlich nicht direkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/795248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/795248</guid><dc:creator><![CDATA[Acidmrp]]></dc:creator><pubDate>Tue, 24 May 2005 18:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Tue, 24 May 2005 21:02:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// im header
extern &quot;C&quot; PCAN_Init g_CAN_Init;

// in cpp
PCAN_Init g_CAN_Init;
</code></pre>
<p>sollte eigentlich funktionieren, wenns denn globale variablen sein müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/795374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/795374</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 24 May 2005 21:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Public symbol &#x27;...&#x27; defined in both module on Thu, 26 May 2005 14:04:37 GMT]]></title><description><![CDATA[<p>danke, dass hat mich auf eine Idee gebracht <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>
<pre><code class="language-cpp">#ifndef CANCardH
#define CANCardH

typedef DWORD (__stdcall *PCAN_Init)(WORD wBTR0BTR1, int CANMsgType);

class CDynamicCAN
{
public:
PCAN_Init g_CAN_Init;
...
};

class PACKAGE TCANCard : public TComponent
{
private:
CDynamicCAN *DynamicCAN
...
};
#endif
</code></pre>
<p>und so klappt es dann auch 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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/796681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/796681</guid><dc:creator><![CDATA[Acidmrp]]></dc:creator><pubDate>Thu, 26 May 2005 14:04:37 GMT</pubDate></item></channel></rss>