Compilation dll avec appelle de fonctions externes
pingosso
Messages postés10Date d'inscriptionjeudi 6 août 2009StatutMembreDernière intervention21 août 2009
-
14 août 2009 à 15:39
pingosso
Messages postés10Date d'inscriptionjeudi 6 août 2009StatutMembreDernière intervention21 août 2009
-
20 août 2009 à 10:41
Bonjour,
Je travaille en ce moment sur un projet qui rassemble du C du VB.NET et du fortran.
EN fait j'ai un problème pour faire communiquer le simulateur en C et Fortran, et l'interface graphique qui est en VB.NET.
Je voulais passer par le __declspec(dllexport) (ce qui marche très bien quand on travaille sur une dll toute simple), mais le problème c'est que je n'arrive pas à compiler une dll avec VC++ (6.0) quand il y a des appels à des fonctions ou données externes via les headers?!!!
J'ai à chaque fois une erreur de link lnk_2001 avec un "unresolved identifier _XXX" (XXX étant le nom de ma fonction ou de la structure que je veux utiliser)
Par contre si je mets le même code dans une librairie statique là ça marche, mais alors du coup impossible de faire appel à la librairie à partir de VB.NET.
Merci par avance de votre aide, même si c'est pour me dire d'arrêter le prog lol!
Lo
A voir également:
Compilation dll avec appelle de fonctions externes
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 19 août 2009 à 18:17
Oui, tu mets toujours __declspec(dllexport) mais faut pas oublier que ça n'est valable uniquement quand tu compiles ta DLL, pas quand tu t'en sers dans un autre programme ! Tu dois donc faire comme ça :
- Dans les options de compilation du projet de la DLL, tu force la définition de _NOMDELADLL_DLL.
- Dans le header, tu mets ça en tête : de cette façon, si c'est lors de la compilation de la DLL, les symboles sont exportés, sinon ils sont importés.
pingosso
Messages postés10Date d'inscriptionjeudi 6 août 2009StatutMembreDernière intervention21 août 2009 20 août 2009 à 10:41
Ok Je vais essayé ça mais je ne vois pas vraiment ce que ça va changer.
En fait ce n'est pas l'exportation des fonctions de ma dll qui pose problème mais l'utilisation dans cette dll de structures externes.
Depuis hier j'ai progressé, mais il y a toujours un problème que je pense insoluble:
Ma Dll contient une seule fonction qui permet de retourner un float qui est la copie d'un float d'une structure externe.
Au final quand j'exécute la dll dans mon programme VB.NET, il n'arrive pas à lire le float que la Dll est censée retourner. Par contre si dans la Dll je lui dis de retourner 180, là ça marche. Mais pas avec une valeur d'une structure externe???!!!
En tout cas merci pour tes conseils. ça fait maintenant plus d'une semaine que j'y suis dessus, je vais essayer de voir si je ne peux pas faire autrement. J'ai vu que l'on pouvait utiliser les mapfile pour communiquer entre deux applis, mais bon moi j'ai besoin de temps réel et la je ne suis pas sur que ça soit assez rapide.
Merci encore, Si tu as d'autres solutions je suis preneur. Je teste ta solution ce matin et je te tiens au courant.