2009-08-19 12 views
0

Ich habe eine DLL kompiliert im 32bit-Modus, aber wenn kompilieren im 64-Bit-Modus (sowohl auf einem 32-Bit-Box Cross Compiling und auf einer nativen 64bit-Box) bekomme ich die oberer Fehler. Das Symbol, das es über beschwert sind die folgenden:VC++ LNK2001: ungelöst externes Symbol nur beim Kompilieren auf 64bit

"struct return_info_ * __cdecl patch_file(char *,char *,char *)" 

Ich bin neu in C++, aber ich glaube, ich definiert haben sowohl die Struktur und die Signatur korrekt. Die Struktur "return_info_" wie folgt definiert ist:

typedef struct return_info_ 
{ 
    char *message; 
    int code; 
} return_info; 

Im gleichen Header, um die Signatur der Funktion ich habe:

return_info* patch_file(char* oldfile, char* newfile, char* patchfile); 

Das ist alles in nativen C/C++ Code, der kompiliert wird als statisch verknüpfte Bibliothek. Ich habe dann unsere Hauptbibliothek, die mit diesem verlinkt und eine clr-kompatible Binärdatei ist. Irgendwelche Ideen, warum der 64bit Compiler diese Fehler wirft?

Antwort

1

Die Deklaration in der Kopfzeile sieht korrekt aus, aber aus irgendeinem Grund wird in Ihrem 64-Bit-Build die tatsächliche Implementierung nicht gefunden.

Ist dies in Ihrer Bibliothek definiert? Es wurde möglicherweise nicht korrekt in seiner 64-Bit-Version kompiliert.

Wenn dies eine Funktion ist, die Teil Ihrer Anwendung ist, stellen Sie sicher, dass die richtige Quelldatei als Teil des 64-Bit-Build-Prozesses enthalten ist.

+0

Ich hatte nicht bemerkt, dass der 64-Bit-Build in ein anderes Verzeichnis gegangen war, als ich mit den verschiedenen Build- und Linker-Optionen herumhantierte, musste ich es geändert haben. Alles gelöscht, sichergestellt, dass alles auf den richtigen Platz zeigt und es nun korrekt kompiliert. Vielen Dank! –

Verwandte Themen