Freigeben über


Linkertoolfehler LNK2005

<Symbol> ist bereits in <Objekt> definiert

Das angegebene Symbol, das in seiner ergänzten Form dargestellt wird, wurde mehrfach definiert.

Weitere Informationen finden Sie in den folgenden Knowledge Base-Artikeln:

  • "LNK2005 Errors When Link C Run-Time Libraries Are Linked Before MFC Libraries" (Q148652)

  • "Global Overloaded Delete Operator Causes LNK2005" (Q140440)

  • "LNK2005 Errors on New and Delete When Defining _ATL_MIN_CRT" (Q184235)

Knowledge Base-Artikel finden Sie auf der MSDN Library-CD-ROM oder unter https://support.microsoft.com/default.aspx.

Auf diesen Fehler folgt der schwerwiegende Fehler LNK1169.

Dieser Fehler kann eine der folgenden Ursachen haben:

  1. Die Kombination statischer und dynamischer Bibliotheken bei gleichzeitiger Verwendung von /clr.

  2. Das Symbol ist eine Paketfunktion (wird durch die Kompilierung mit /Gy erstellt) und befindet sich in mehr als einer Datei, es wurde jedoch zwischen den Kompilierungen geändert. Kompilieren Sie alle Dateien neu, die Symbol enthalten.

  3. Das Symbol wurde in zwei Memberobjekten in verschiedenen Bibliotheken unterschiedlich definiert, und beide Memberobjekte wurden verwendet.

  4. Ein absolutes Symbol wurde zweimal definiert, in jeder Definition mit einem anderen Wert.

  5. In einer Headerdatei wurde eine Variable deklariert und definiert. Folgende Lösungen sind möglich:

    • Deklarieren Sie die Variable in der H-Datei: extern BOOL MyBool; nehmen Sie dann Zuweisungen in einer C- oder CPP-Datei vor: BOOL MyBool = FALSE;.

    • Deklarieren Sie die Variable als static.

    • Deklarieren Sie die Variable als selectany.

  6. Bei Verwendung von uuid.lib in Kombination mit anderen LIB-Dateien, durch die GUIDs definiert werden (z. B. oledb.lib und adsiid.lib). Beispiel:

    oledb.lib(oledb_i.obj) : error LNK2005: _IID_ITransactionObject
    already defined in uuid.lib(go7.obj)
    

    Um das Problem zu beheben, fügen Sie den Befehlszeilenoptionen des Linkers /FORCE:MULTIPLE hinzu und stellen sicher, dass uuid.lib die erste Bibliothek ist, auf die verwiesen wird.