2009-08-19 7 views
0

J'ai créé une dll qui compile bien en mode 32 bits, mais en compilant en mode 64 bits (à la fois sur une boîte croisée 32 bits et sur une boîte 64 bits native), j'obtiens erreur ci-dessus. Le symbole qu'il se plaint sont les suivantes:VC++ LNK2001: symbole externe non résolu uniquement lors de la compilation sur 64bit

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

Je suis nouveau à C++, mais je pense que je l'ai défini à la fois la struct et la signature correctement. Le struct "return_info_" est défini comme suit:

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

Dans le même en-tête, j'ai la signature de la fonction:

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

C'est dans c/C++ code natif, qui est compilé comme une bibliothèque liée statiquement. J'ai alors notre bibliothèque principale qui lie à ceci et est un binaire compatible de clr. Des idées pour lesquelles le compilateur 64 bits renvoie ces erreurs?

Répondre

1

La déclaration dans l'en-tête semble correcte, mais pour une raison quelconque, dans votre version 64 bits, l'implémentation réelle n'a pas été trouvée.

Est-ce que cela est défini dans votre bibliothèque? Il n'a peut-être pas été compilé correctement dans sa version 64 bits.

S'il s'agit d'une fonction faisant partie de votre application, assurez-vous que le fichier source correct est inclus dans le processus de construction 64 bits.

+0

Je n'avais pas remarqué que la version 64 bits était allée dans un répertoire différent, alors que je jouais avec les différentes options de build et d'éditeur de liens, j'ai dû la changer. Effacé tout, veillé à ce que tout indiquait le bon endroit et il compile maintenant correctement. Merci! –

Questions connexes