J'ai une application MFC régulière à partir de laquelle je veux exporter une variable et l'utiliser dans une DLL. Voici un résumé des déclarations/définitions dans exe/dll qui devrait ressembler à here.Problème lors de l'exportation de la variable EXE à utiliser dans la DLL
__declspec(dllexport) BOOL g_status; // In EXE
__declspec(dllimport) BOOL g_status; // in DLL
L'erreur de liaison est suivant ce qui semble indiquer qu'il ne peut pas trouver en raison de mutiler nom?
error LNK2001: unresolved external symbol "__declspec(dllimport) int g_status" ([email protected]@3HA)
Alors j'ai essayé cette combinaison ajouter extern "C"' to declaration in dll but it doesn't work because if I use C decorations on dll, the same has to be done on exe side as well but using 'extern "C"
côté exe en fait forces qu'il soit devenu déclaration!
__declspec(dllexport) BOOL g_status; // in EXE
extern "C" __declspec(dllimport) BOOL g_status; // in DLL
Linker erreur ci-dessous:
error LNK2001: unresolved external symbol __imp__g_status
Je suis un peu perdu. Je vois beaucoup d'exemples avec des fonctions mais pas beaucoup avec des variables, comment les exporter et si les décorations de noms sont encore en jeu?
Votre premier "en EXE" montre 'dllimport', devrait être' dllexport' – franji1
@ franji1 merci j'ai vérifié, qui était une faute de frappe dans le post seulement, l'a réparé. – zar
Cela finit presque toujours par une dépendance circulaire. Vous ne pouvez pas lier la DLL avant d'avoir lié le fichier EXE. Mais vous ne pouvez pas lier le fichier EXE avant d'avoir lié la DLL. Il est [formellement possible] (https://stackoverflow.com/questions/2727020/what-is-use-of-exp-and-what-is-the-difference-between-lib-and-dll), mais pas directement supporté par l'IDE. Il vaut mieux éviter, bien sûr, si vous avez besoin d'une autre DLL pour être la maison de cette variable, alors qu'il en soit ainsi. Vous trouverez probablement plus d'utilisation pour cela. –