-
1 pièce(s) jointe(s)
Appel DLL en C
Bonjour,
Je veux faire une DLL qui fait appel à une autre DLL, dans le but final
que la première DLL sera appelé par du labview mais ceci n'est pas pris en
compte pour l'instant.
Dans un premier temps j'essais déjà de faire deux DLL simple dont une
première fais un appel à la deuxième pour pouvoir executé un calcul.
Bien sûr que dans mon example j'aurais pu tout mettre dans la même
mais j'ai fais cela car après se sera plus compliqué et je veux déjà
faire mes premiers pas avec un example simple. J'ai fais les deux dll
sous visual studio 6.0.
J'ai réussi à compiler les deux DLL ;) (déjà un bon point) et à les liers ensembles je penses mais
lors de l'exécution il ne trouve pas la 2ème DLL. Le pointer devant pointer sur
la deuxième DLL reste à null !
Je joints les fichiers sources avec projet pour que se soit plus simple.
La 1er Dll à appelé est mainDll qui fera appel à subDll.
Merci d'avance pour toute les réponses, si jamais il y aura aussi un pro du
labview dans le coin pour la suite car il faudra faire des appels avec des structures....
-
en fait le code fonctionne bien chez moi...en modifiant les options du projet..
Donc il faut juste que tu indiques le répertoire courant lors du débogage dans les options de ton projet... sous VS2005 c'est $(TargetDir).
-
Merci pour la réponse, mais pourrais-tu être un peu plus
précis car je suis pas un habitué du vs 2005 (je travaille aussi actuellement dessus mais je débute) quelle menu, ...!
Il faut donc changer pour le mainDll une variable ?
As-tu fais une application qui fait appel à ma mainDll pour tester ?
-
dans le LoadLibrary, tu ne spéficies pas le chemin complet de la DLL, juste son nom. Donc elle est recherchée dans le répertoire courant de l'exe, puis le path, puis les répertoires systèmes, ...
Hors quand tu debug, par defaut le répertoire courant est celui du projet qui n'est jamais par défaut celui de l'exécutable généré.. donc, il faut que tu places les dll dans le même repertoire que celui de ton exe et que tu spécifie à VS2005 de ne pas lancer le déboguage dans le répertoire du projet mais dans celui de l'exe. Si tu n'a pas changé les répertoires par défaut de la ta solution, va dans Projet, proriétés, Proriétés de configuration, Déboguage, Repertoire de travail et met la valeur $(TargetDir)...
-
:king: Super, merci beaucoups j'ai pu faire l'appel depuis labview et sa fonctionne très bien !
Il manquait pas grand chose mais fallait trouvé...
Maintenant je vais pouvoir passer au niveau supérieur, tu connais
labview :roll: ?
-
Connais de nom mais jamais utilisé...