<?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[Linkerfehler 2019 oder 2005 - kanns mir aussuchen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab ein Problem mit meinem Linker.<br />
Also beim linken meiner compilierten Datei mit der Datei des Frameworks bekomme ich den garstigen und gut bekannten <strong>LNK2019: unresolved external symbol</strong> Fehler.</p>
<pre><code>C:\INET-20061020\Examples\...\Test_simp01&gt;link.exe /nologo /dll /subsystem:console /opt:noref 
EtherApp_m.obj Ether2App.obj ../../../bin/INET.lib  /out:Test_simp01.dll

Ether2App.obj : error LNK2019: unresolved external symbol &quot;public: __thiscall Ieee802Ctrl::Ieee802Ct
rl(void)&quot; (??0Ieee802Ctrl@@QAE@XZ) referenced in function &quot;protected: void __thiscall Ether2App::sen
dPacket(void)&quot; (?sendPacket@Ether2App@@IAEXXZ)
</code></pre>
<p>Sobald ich ihm aber die Datei angebe, in der der angeblich fehlende Konstruktor zu finden ist, bekomme ich einen <strong>LNK2005 already defined in</strong> Fehler.</p>
<pre><code>C:\INET-20061020\Examples\...\Test_simp01&gt;link.exe /nologo /dll /subsystem:console /opt:noref ../
../../NetworkInterfaces/Contract/Ieee802Ctrl_m.obj EtherApp_m.obj Ether2App.obj ../../../bin/INET.li
b  /out:Test_simp01.dll

INET.lib(INET.exe) : error LNK2005: &quot;public: __thiscall cStructDescriptor::cStructDescriptor(class c
StructDescriptor const &amp;)&quot; (??0cStructDescriptor@@QAE@ABV0@@Z) already defined in Ieee802Ctrl_m.obj
</code></pre>
<p>Eigentlich sollte ich mir die extra Angabe der besagten Datei sparren können, da alles in der INET.lib vorhanden sein sollte(aber irgendwie findet er den Konstruktor 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="😞"
    /> ). Ohne Angabe dieser Datei (<strong>Ieee802Ctrl_m.obj</strong>) bekomme ich eben den LNK2019, mit Angabe dieser Datei den LNK2005.</p>
<p>Weiß jemand Rat, was ich da tun könnte?<br />
<a href="http://farm4.static.flickr.com/3101/2919093004_a31e093c63_o.png" rel="nofollow">Hier noch ein Bild vom bin Ordner (dort wo sich die lib befindet)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224168/linkerfehler-2019-oder-2005-kanns-mir-aussuchen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 18:26:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224168.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Oct 2008 15:22:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linkerfehler 2019 oder 2005 - kanns mir aussuchen on Mon, 06 Oct 2008 15:39:22 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab ein Problem mit meinem Linker.<br />
Also beim linken meiner compilierten Datei mit der Datei des Frameworks bekomme ich den garstigen und gut bekannten <strong>LNK2019: unresolved external symbol</strong> Fehler.</p>
<pre><code>C:\INET-20061020\Examples\...\Test_simp01&gt;link.exe /nologo /dll /subsystem:console /opt:noref 
EtherApp_m.obj Ether2App.obj ../../../bin/INET.lib  /out:Test_simp01.dll

Ether2App.obj : error LNK2019: unresolved external symbol &quot;public: __thiscall Ieee802Ctrl::Ieee802Ct
rl(void)&quot; (??0Ieee802Ctrl@@QAE@XZ) referenced in function &quot;protected: void __thiscall Ether2App::sen
dPacket(void)&quot; (?sendPacket@Ether2App@@IAEXXZ)
</code></pre>
<p>Sobald ich ihm aber die Datei angebe, in der der angeblich fehlende Konstruktor zu finden ist, bekomme ich einen <strong>LNK2005 already defined in</strong> Fehler.</p>
<pre><code>C:\INET-20061020\Examples\...\Test_simp01&gt;link.exe /nologo /dll /subsystem:console /opt:noref ../
../../NetworkInterfaces/Contract/Ieee802Ctrl_m.obj EtherApp_m.obj Ether2App.obj ../../../bin/INET.li
b  /out:Test_simp01.dll

INET.lib(INET.exe) : error LNK2005: &quot;public: __thiscall cStructDescriptor::cStructDescriptor(class c
StructDescriptor const &amp;)&quot; (??0cStructDescriptor@@QAE@ABV0@@Z) already defined in Ieee802Ctrl_m.obj
</code></pre>
<p>Eigentlich sollte ich mir die extra Angabe der besagten Datei sparren können, da alles in der INET.lib vorhanden sein sollte(aber irgendwie findet er den Konstruktor 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="😞"
    /> ). Ohne Angabe dieser Datei (<strong>Ieee802Ctrl_m.obj</strong>) bekomme ich eben den LNK2019, mit Angabe dieser Datei den LNK2005.</p>
<p>Weiß jemand Rat, was ich da tun könnte?<br />
<a href="http://farm4.static.flickr.com/3101/2919093004_a31e093c63_o.png" rel="nofollow">Hier noch ein Bild vom bin Ordner (dort wo sich die lib befindet)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594297</guid><dc:creator><![CDATA[THE_ONE]]></dc:creator><pubDate>Mon, 06 Oct 2008 15:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler 2019 oder 2005 - kanns mir aussuchen on Tue, 07 Oct 2008 06:31:44 GMT]]></title><description><![CDATA[<p>Also der zweite Fehler klingt für mich sehr nach fehlenden Includeguards.</p>
<p>Aber ohne Code wird das nur ein Ratespiel. <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/1594580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594580</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 07 Oct 2008 06:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler 2019 oder 2005 - kanns mir aussuchen on Tue, 07 Oct 2008 10:32:40 GMT]]></title><description><![CDATA[<p>Oder eine Funktion, die in einem Header außerhalb der Klasse definiert wurde kein inline Keyword gegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594644</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 07 Oct 2008 10:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler 2019 oder 2005 - kanns mir aussuchen on Tue, 07 Oct 2008 09:19:08 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Hier der IEEE802CTRL Header:</p>
<pre><code class="language-cpp">#ifndef _IEEE802CTRL_M_H_
#define _IEEE802CTRL_M_H_

#include &lt;omnetpp.h&gt;

// opp_msgc version check
#define MSGC_VERSION 0x0303
#if (MSGC_VERSION!=OMNETPP_VERSION)
#    error Version mismatch! Probably this file was generated by an earlier version of opp_msgc: 'make clean' should help.
#endif

// cplusplus {{ ... }} section:

#include &quot;MACAddress.h&quot;
// end cplusplus
enum Ieee802MessageKind {
    IEEE802CTRL_DATA = 2003,
    IEEE802CTRL_REGISTER_DSAP = 2004,
    IEEE802CTRL_DEREGISTER_DSAP = 2005,
    IEEE802CTRL_SENDPAUSE = 2006
};

enum SAPCode {
    SAP_IBM_SNA = 0x04,
    SAP_IP = 0x06,
    SAP_3COM = 0x80,
    SAP_SNAP = 0xAA,
    SAP_BANYAN = 0xBC,
    SAP_NOVELL_IPX = 0xE0,
    SAP_LAN_MANAGER = 0xF4,
    SAP_CLNS = 0xFE
};

enum EtherType {
    ETHERTYPE_IP = 0x0800,
    ETHERTYPE_ARP = 0x0806,
    ETHERTYPE_RARP = 0x8035
};

class Ieee802Ctrl : public cPolymorphic
{
  protected:
    MACAddress src_var;
    MACAddress dest_var;
    int etherType_var;
    int ssap_var;
    int dsap_var;
    int pauseUnits_var;
    int inputPort_var;
    // protected and unimplemented operator==(), to prevent accidental usage
    bool operator==(const Ieee802Ctrl&amp;);

  public:
    Ieee802Ctrl();
    Ieee802Ctrl(const Ieee802Ctrl&amp; other);
    virtual ~Ieee802Ctrl();
    Ieee802Ctrl&amp; operator=(const Ieee802Ctrl&amp; other);
    virtual void netPack(cCommBuffer *b);
    virtual void netUnpack(cCommBuffer *b);

    // field getter/setter methods
    virtual MACAddress&amp; getSrc();
    virtual const MACAddress&amp; getSrc() const {return const_cast&lt;Ieee802Ctrl*&gt;(this)-&gt;getSrc();}
    virtual void setSrc(const MACAddress&amp; src_var);
    virtual MACAddress&amp; getDest();
    virtual const MACAddress&amp; getDest() const {return const_cast&lt;Ieee802Ctrl*&gt;(this)-&gt;getDest();}
    virtual void setDest(const MACAddress&amp; dest_var);
    virtual int getEtherType() const;
    virtual void setEtherType(int etherType_var);
    virtual int getSsap() const;
    virtual void setSsap(int ssap_var);
    virtual int getDsap() const;
    virtual void setDsap(int dsap_var);
    virtual int getPauseUnits() const;
    virtual void setPauseUnits(int pauseUnits_var);
    virtual int getInputPort() const;
    virtual void setInputPort(int inputPort_var);
};

inline void doPacking(cCommBuffer *b, Ieee802Ctrl&amp; obj) {obj.netPack(b);}
inline void doUnpacking(cCommBuffer *b, Ieee802Ctrl&amp; obj) {obj.netUnpack(b);}
#endif // _IEEE802CTRL_M_H_
</code></pre>
<p>und hier mein Header:</p>
<pre><code class="language-cpp">#ifndef __ETHER2APP_H__
#define __ETHER2APP_H__

#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;math.h&gt;
#include &lt;omnetpp.h&gt;
#include &quot;INETDefs.h&quot;
#include &quot;Ieee802Ctrl_m.h&quot;
#include &quot;EtherApp_m.h&quot;
#include &quot;utils.h&quot;

class Ether2App : public cSimpleModule
{
    // send parameters
    long seqNum;

    cPar *waitTime;

	int EtherType;

    MACAddress destMACAddress;

    // receive statistics
    long packetsSent;
    long packetsReceived;
    cOutVector eedVector;
    cStdDev eedStats;

  protected:
    virtual void initialize(int stage);
    virtual int numInitStages() const {return 2;}
    virtual void handleMessage(cMessage *msg);
    virtual void finish();

    MACAddress resolveDestMACAddress();

    void sendPacket();
    void receivePacket(cMessage *msg);  
};
#endif
</code></pre>
<p>Hoffentlich seht ihr wo mein Problem liegt, bin selber scheinbar nicht fähig dazu das Problem zu lösen.<br />
Lg THE_ONE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594665</guid><dc:creator><![CDATA[THE_ONE]]></dc:creator><pubDate>Tue, 07 Oct 2008 09:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler 2019 oder 2005 - kanns mir aussuchen on Tue, 07 Oct 2008 09:49:08 GMT]]></title><description><![CDATA[<p>Die Funktion, deren Defintion im ersten Fall fehlt, ist der Defaut-Konstruktor von Ieee802Ctrl. Im zweiten Fall ist eine andere Funktion doppelt definiert, nämlich der Copy-Konstruktor von cStructDescriptor. Diese zweite Definition musst du entfernen (vermutlich aus der Quelle von Ieee802Ctrl_m).</p>
<p>Ganz nebenbei gesagt, die const-Overloads von<br />
Ieee802Ctrl::getSrc()<br />
und<br />
Ieee802Ctrl::getDest()<br />
sind ein bisschen fragwürdig. Soll der Zusammenhang zischen const und Nonconst-Version immer so bestehen, so dürfte eigentlich nur eine dieser beiden Funktionen virtuell sein und die non-const Version müsste die konstante Version aufrufen, nicht umgekehrt (dann Redeklaration der non-const-Version in abgeleiteten Klassen per using nicht vergesen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594678</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 07 Oct 2008 09:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler 2019 oder 2005 - kanns mir aussuchen on Tue, 07 Oct 2008 11:08:29 GMT]]></title><description><![CDATA[<p>Hier ein Auszug der <a href="http://Ieee802Ctrl.cc" rel="nofollow">Ieee802Ctrl.cc</a> Datei.</p>
<pre><code class="language-cpp">class Ieee802CtrlDescriptor : public cStructDescriptor
{
  public:
    Ieee802CtrlDescriptor();
    virtual ~Ieee802CtrlDescriptor();
    Ieee802CtrlDescriptor&amp; operator=(const Ieee802CtrlDescriptor&amp; other);
    virtual cPolymorphic *dup() const {return new Ieee802CtrlDescriptor(*this);}

    virtual int getFieldCount();
    virtual const char *getFieldName(int field);
    virtual int getFieldType(int field);
    virtual const char *getFieldTypeString(int field);
    virtual const char *getFieldEnumName(int field);
    virtual int getArraySize(int field);

    virtual bool getFieldAsString(int field, int i, char *resultbuf, int bufsize);
    virtual bool setFieldAsString(int field, int i, const char *value);

    virtual const char *getFieldStructName(int field);
    virtual void *getFieldStructPointer(int field, int i);
    virtual sFieldWrapper *getFieldWrapper(int field, int i);
};

Register_Class(Ieee802CtrlDescriptor);

Ieee802CtrlDescriptor::Ieee802CtrlDescriptor() : cStructDescriptor(&quot;cPolymorphic&quot;)
{
}
</code></pre>
<p>Das sind die Stellen aus dem File wo der String <strong>cStructDescriptor</strong> vorkommt. Was soll ich da jetzt rauslöschen? Außerdem würde ich das nur ungern tun da das ein Datei aus dem Framework ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1594734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1594734</guid><dc:creator><![CDATA[THE_ONE]]></dc:creator><pubDate>Tue, 07 Oct 2008 11:08:29 GMT</pubDate></item></channel></rss>