Bonjour,
Je vais essayer d'être claire et aussi brève que possible. J'ai réçu d'un fournisseur un code C sous forme de Dll, contenant:
- un .lib
- un .dll
- un .h contenant la déclaration de la fonction principale à utiliser, sous la forme:
extern __declspec(dllexport) void step_FLUID_NETWORK( double VAR1, int *Var2,
double *Var3 ) ;
Cette Dll, j'ai réussi à l'uliser en faisant un #include du .h dans mon source .c, en appelant la fonction telle que définie dans le .h, et en compilant avec le .lib rajouté dans les liens. Tout marche miraculeusement et merveilleusement bien.
Maintenant, place à mon problème: j'essaie de créer une Dll que j'utiliserais de la même manière. J'ai déclaré ma fonction principale avec "extern __declspec(dllexport)" aussi bien dans le code de ma Dll que dans le code source utilisateur. Ca doit à peu près marcher car j'ai vérifié que mon code utilisateur entrait bien dans la fonction de la Dll. Rajoutez à cela des variables globales définies dans un .h dans lequel je définis les entrées/sorties du modèle, et auxquelles j'assigne des valeurs dans le code utilisateur. Dans ma Dll, les variables globales sont déclarées sous la forme "__declspec(dllexport) int var1" par exemple. Dans mon code utilisateur, si j'utilise "__declspec(dllimport) int var1" comme j'avais cru comprendre qu'il il fallait le faire, je me fais jeter à la compilation (pbm sur _imp__var1 ?!). Si j'utilise "__declspec(dllexport) int var1" je ne me fait pas jeter, mais lorsque le code utilisateur entre dans la fonction Dll, var1 n'a pas pris la valeur que je lui ai assigné. Est-ce que quelqu'un a une vague idée de la manière de procéder ? pourquoi le fait d'utiliser "__declspec(dllexport) " aussi bien dans la dll que dans le programme utilisateur fonctionne sur les fonctions mais pas sur les variables globales ?
merci d'avoir tout lu !
Sandy