J'essaie une variable globale pour tenir mon message d'erreur dans C.variable globale dans une autre bibliothèque, C
Une bibliothèque appelée Utils a:
#ifndef private_error_h
#define private_error_h
extern char error[1024];
__declspec(dllexport) void FillError(char* newError);
#define GetErr() error
#endif
fichier error.c:
#include "private_error.h"
char error[1024];
void FillError(char* newError) {
// ...
}
Ensuite, j'essaie de l'utiliser dans un programme:
#include "private_error.h"
int main() {
FillError("General error");
printf("%s\n", GetErr());
return 0;
}
Il crée deux variables avec des adresses différentes. Comment puis-je faire en sorte que le programme utilise la variable de la bibliothèque Utils?
J'ai réussi à contourner ce problème en changeant GetErr à une fonction retournant la chaîne, mais je me demande toujours où se trouve l'erreur.
La seconde, sans extern, est une définition. –
J'ai essayé cela et la bibliothèque ne peut pas reconnaître le tableau. error LNK2001: symbole externe non résolu _HError – Hagai
Vous avez peut-être des problèmes particuliers avec votre fichier DLL, car vous indiquez dans votre question ce que vous ciblez. –