Avatar billede hbruger Nybegynder
03. november 2001 - 22:30 Der er 9 kommentarer

error LNK2005

winClass.obj : error LNK2005: \"public: __thiscall WinClass::WinClass(struct HINSTANCE__ *)\" (??0WinClass@@QAE@PAUHINSTANCE__@@@Z) already defined in Main.obj

Hvad betyder det og hvordan kan jeg løse det?
Avatar billede dejbjerg Nybegynder
03. november 2001 - 22:42 #1
Linker Tools Error LNK2005
symbol already defined in object

The given symbol, displayed in its decorated form, was multiply defined.

Tips

One of the following may be a cause:

The most common cause of this error is accidentally linking with both the single-threaded and multithreaded libraries. Ensure that the application project file includes only the appropriate libraries and that any third-party libraries have appropriately created single-threaded or multithreaded versions.

The given symbol was a packaged function (created by compiling with /Gy) and was included in more than one file but was changed between compilations. Recompile all files that include the symbol.

The given symbol was defined differently in two member objects in different libraries, and both member objects were used.

An absolute was defined twice, with a different value in each definition.
Avatar billede apollo69 Nybegynder
03. november 2001 - 22:43 #2
Avatar billede hbruger Nybegynder
03. november 2001 - 22:45 #3
det fatter jeg ikke!?
Avatar billede dejbjerg Nybegynder
03. november 2001 - 22:53 #4
Gemmer sætningen (??0WinClass@@QAE@PAUHINSTANCE__@@@Z) et variabelnavn, som du selv har oprettet?
Avatar billede dejbjerg Nybegynder
03. november 2001 - 23:16 #5
Jeg har selv fået LNK2005, når jeg initialiserer static variable i den headerfil, hvor de er definerede - fordi headerfilen includes flere gange. Når jeg flytter initialiseringen et sted hen hvor den kun \'læses\' een gang forsvinder problemet.
Avatar billede jpk Nybegynder
04. november 2001 - 20:51 #6
Har du noget lign. understående i din fil?
Hvis ikke, så prøv at tilføje det (de første 2 linier aller øverst i filen der indeholder din WinClass og den sidste linie aller nederst i filen...)

#ifndef FILENAME_H
#define FILENAME_H

//Kode..

#endif
Avatar billede soepro Nybegynder
05. november 2001 - 08:49 #7
Problemet opsåt ofte selv efter man har gjort som jpk skriver, fordi den samme variable defineres med værdi i flere moduler:

#ifndef __myhdr_h__
  #define __myhdr_h__

  extern int wscroll = 0;
#endif

Eftersom wscroll bliver initialiseret med en værdi her (værdien 0), vil initialiseringen ligge i alle module der har fat i myhdr.h Løsningen er at definere eet af modulerne som MAIN og så gøre sådan her:

#define MAIN
#include \"myhdr.h\"

mens RESTEN af modulerne så gør sådan her:

#include \"myhdr.h\"

I header-file tilføjes så en lille ekstra krølle:

#ifndef __myhdr_h__
  #define __myhdr_h__

  extern int wscroll
    #ifdef MAIN
      = 0
    #endif
    ;
#endif

Så bliver den statiske variable kun initialiseret EEN gang.
Avatar billede soepro Nybegynder
05. november 2001 - 08:51 #8
Du kan i øvrigt så også bruge MAIN til at få både lavet det externe referencer og selve instansen af variablen:

#ifndef __myhdr_h__
  #define __myhdr_h__

  #ifdef MAIN
    #define _Vartp
  #else
    #define _Vartp extern
  #endif

  _Vartp int wscroll
  #ifdef MAIN
    = 0
  #endif
  ;
#endif

Det giver selvfølgelig nogle lidt længere og mere knudrede header-filer, men tingene passer så altid sammen.
Avatar billede nagual Nybegynder
11. november 2001 - 21:43 #9
Du skal gøre følgende:
1. Åbn Project Settings dialog box ved at klikke Settings på Build menu.
2. I Settings vælger du den project configuration som får link errors.
3. Klik på Link tab.
4. Vælg INPUT i Category combo box.
5. I Libraries to Ignore edit box, intaster du de libraries navne som giver fejlen (f.eks. Nafxcwd.lib Libcmtd.lib)
6. I Object/library Modules edit box, indtaster du library names. Du må sikre dig at disse er listede i samme rækkefølge som i de to første libraries. (f. eks. Nafxcwd.lib Libcmtd.lib).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester