J’écris un programme pour convertir une image et comparer la vitesse de traitement des données en C et en assemblage. J’ai 3 projets:
Dans l’en-tête de la DLL C, j’ai simplement écrit:
#ifdef PROJEKTC_EXPORTS #define PROJEKTC_API __declspec(dllexport) #else #define PROJEKTC_API __declspec(dllimport) #endif ... extern PROJEKTC_API unsigned int ThreadID; PROJEKTC_API void __cdecl funkcjaC(void* Args);
et après avoir inclus cet en-tête, je peux accéder à la variable ThreadID à la fois dans le projet principal et dans la DLL C.
Le problème commence lorsque j’essaie de faire la même chose en ASM. J’ai essayé des constructions comme extern ASMThreadID:dword
dans un bloc .code, mais cela ne fonctionnera pas.
L’erreur que j’ai eu: error LNK2019: unresolved external symbol _ASMThreadID referenced in function _MyProc1
J’ai l’impression que c’est une question de 1-2 lignes de code, mais je ne peux pas comprendre quelle instruction dois-je utiliser.
Je lie les projets par fichier de définition de module dans ASM et en ajoutant le fichier ASM.lib dans l’éditeur de liens -> Entrée du projet principal.
Avez-vous des suggestions?
Avec un peu d’aide d’anciennes publications de asmcommunity.net, j’ai réussi à la faire fonctionner:
EXTERNDEF C ASMThreadID:DWORD
ASMThreadID dd 0
LIBRARY "nameOfProject" EXPORTS ... ASMThreadID
extern __declspec(dllimport) unsigned int ASMThreadID;
Maintenant cela fonctionne comme un charme.
La déclaration “publique” m’a envoyé à la bonne façon de chercher. Merci pour votre aide mate!