Nicht aufgelöstes externes symbol Fehler, die nur in 64-bit-Modus und nicht im 32-bit-build

Ich habe ein VC++ - code (erstellt mit VS2008), macht die Verwendung von statischen Bibliotheken (*.lib-Dateien statisch gelinkt, während der compile-Zeit).

Verständnis zu erleichtern lassen Sie ' s siehe meine EXE-code als "AAA.EXE" & finden Sie die lib-Dateien als "A. lib", b.lib etc...

Sowohl die AAA.EXE code und statische code-Bibliotheken werden erstellt, indem die VS2008.

Ich sehen, dass meine "AAA.EXE" ist in Ordnung, die in 32-bit-version und zeigt die unten linker-Fehler beim AAA.EXE gebaut wird in 64-bit-Modus.

Habe ich natürlich wieder aufgebaut, die statische Bibliotheken sind in der 64-bit-Modus gestellt und die lib-Pfad in meinem AAA.EXE so aus: "Projekt-Konfiguration-Eigenschaften entsprechend AAA.EXE -> Linker -> allgemein/Eingabe".

Diese linker-Fehler ist wirklich stört mich die form eine lange Zeit. Jede Hilfe wird sehr geschätzt.

Logger.lib(Loggerr.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall CWTTLogger::CWTTLogger(void)" (__imp_??0CWTTLogger@@QAE@XZ)    

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CWTTLogger::~CWTTLogger(void)" (__imp_??1CWTTLogger@@UAE@XZ)    

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionA(unsigned short *,long *)" (__imp_?FunctionA@CWTTLogger@@QAEJPAGPAJ@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionB(unsigned short *,long)" (__imp_?FunctionB@CWTTLogger@@QAEJPAGJ@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionC(unsigned short *,unsigned long,unsigned short *,long)" (__imp_?FunctionC@CWTTLogger@@QAEJPAGK0J@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __cdecl CWTTLogger::FunctionD(unsigned long,long,...)" (__imp_?FunctionD@CWTTLogger@@QAAJKJZZ)             

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionE(unsigned short *,long)" (__imp_?FunctionE@CWTTLogger@@QAEJPAGJ@Z)         


1>C:\Users\User1\Documents\XYZ\Code\64bit\aaa.exe: fatal error LNK1120: 7 unresolved externals

Hinzufügen ::

Ich habe getan, 2 änderungen in den Einstellungen machen, damit mein AAA.exe code 64-bit von 32-bit::
1) Nicht aufgelöstes externes symbol Fehler, die nur in 64-bit-Modus und nicht im 32-bit-build

2)
Nicht aufgelöstes externes symbol Fehler, die nur in 64-bit-Modus und nicht im 32-bit-build

Natürlich ist der code kompatibel ist (sowohl 32-bit & 64-bit. Sind diese 2 änderungen der Einstellungen in VC2008 komplette für die Herstellung der 32-bit-AAA.exe code 64-bit-build?

Durch den Blick auf andere stackoverflow-link, den ich sehen es ist eine weitere settoing in "Projekt-Konfiguration, Eigenschaften -> Linker-> Erweitert-> Ziel-Computer ist standardmäßig auf "nicht festgelegt"
und wenn ich make-target machine == "MACHINEx64", ich bekomme eine andere Art von Fehler, die ich immer war, früher ::

"fatal error LNK1112: Modul-Maschinen-Typ 'X86' Konflikte mit dem Ziel
Maschine Typ 'x64'"

Ich bin wirklich nicht mit einer Klarheit auf, wenn ich die Einstellung der "Ziel-machine" - Feld in der linker-option als "Nicht Festgelegt" oder "MACHINEx64"?

Wenn es ein "JA", ich brauche, um herauszufinden, wie das problem zu lösen.

was ist das CWTTLogger Klasse, ist es etwas aus einer Ihrer Bibliotheken?
Es können mehrere Dinge sein, konnte das problem aber noch lange kein Grund ist sichtbar in dem, was Sie gezeigt haben. Die meisten offensichtliche Frage ist: Sie sind der gewissen, die Sie neu erstellen die lib in 64-bit-und-Verknüpfung gegen Sie und nicht 32-bit-version von Unfall?
Ich habe Hinzugefügt, weitere details auf, was alle Einstellungen habe ich für den Wechsel des 32-bit-version auf eine 64-bit-version AAA.EXE. Ja, CWTTLOgger ist meine Klasse Namen, die in den Bibliotheken (.lib) habe ich definiert.
Möchte klarstellen, dass meine statische Bibliotheken (.lib) vorhanden sind, eine andere Lösung und ich habe die änderungen alle auf x64. In der snapshot-ich habe gezeigt, jedes Projekt ist eine indivisual EXE-Datei und haben keine Beziehung/Abhängigkeit von einem anderen Projekt auf die gleiche Lösung. Alle meine Bibliotheken A. lib,B. lib etc... sind alle Anwesenden in eine andere Lösung. –

InformationsquelleAutor codeLover | 2013-08-26

Schreibe einen Kommentar