begin process at 2012 05 28 18:56:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Compilation dll avec appelle de fonctions externes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Compilation dll avec appelle de fonctions externes

vendredi 14 août 2009 à 15:39:31 | Compilation dll avec appelle de fonctions externes

pingosso

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

vendredi 14 août 2009 à 16:22:51 | Re : Compilation dll avec appelle de fonctions externes

ghuysmans99

Membre Club

As-tu mis ceci dans ton code ?

Code C/C++ :
#pragma comment(lib,"chemin du fichier.lib")

---
VB.NET is good ... VB6 is better

lundi 17 août 2009 à 08:10:30 | Re : Compilation dll avec appelle de fonctions externes

pingosso

Non!!!?

Mais dans quel code? Celui de la dll ou celui de la lib qui contient le header et la fonction que je souhaite utiliser?

Comment fonctionne ce #pragma comment?

Merci pour ta réponse.

Lo

lundi 17 août 2009 à 08:43:33 | Re : Compilation dll avec appelle de fonctions externes

pingosso

Je viens de tester le #pragma comment et ça ne marche pas. Il me ressort cette erreur:

error LNK2001: unresolved external symbol _lolo

"lolo" étant le nom d'une structure de ma librairie, qui est contenue dans un header.

Je ne sais plus comment faire!!!

lundi 17 août 2009 à 18:25:22 | Re : Compilation dll avec appelle de fonctions externes

ghuysmans99

Membre Club

Si le chemin que tu lui as indiqué est correct, cette ligne doit évidemment être mise dans le code de l'appellant (en tête du fichier stdafx.h)

---
VB.NET is good ... VB6 is better

mercredi 19 août 2009 à 16:20:13 | Re : Compilation dll avec appelle de fonctions externes

pingosso

Merci.

Je n'ai pas trouvé la solution, mais c'est pas grave j'ai essayé de trouver autre chose, mais bon je me retrouve confronter à un autre problème:

Quand je déclare une structure en extern dans ma dll, elle me sort la même erreur de link en disant qu'il y a un problème de symbol extern!!!

Pourtant cette structure est déclarée dans un header qui est inclus dans la dll???!!!

Comprend plus rien lol

mercredi 19 août 2009 à 18:17:33 | Re : Compilation dll avec appelle de fonctions externes

ghuysmans99

Membre Club

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.

Code C/C++ :
#ifdef _NOMDELADLL_DLL

#define NOMDELADLL_API __declspec(dllexport)
#else
#define NOMDELADLL_API __declspec(dllimport)
#endif

---
VB.NET is good ... VB6 is better

jeudi 20 août 2009 à 10:41:42 | Re : Compilation dll avec appelle de fonctions externes

pingosso

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.

A+

Lo



Cette discussion est classée dans : net, vb, dll, fonctions, externes


Répondre à ce message

Sujets en rapport avec ce message

Utiliser une DLL avec une interface en C [ par TheRobot ] Bonjour, Je developpe une application en VB.net et je voudrais utiliser une dll avec une interface C.A priori ce n'est pas possible car il n'y a pas d DLL de VC++ à VB.net [ par toxjamescook ] bonjour j'ai besoin d'un petit renseignement:Voila je souhaites recupérer des infos numériques de deux bus can puis les visualiser par une interface.j Utilisation DLL faite su VS c++ dans un projet vb.net 2008 [ par meilop ] Salut à tous, VS2008 j'ai crée une dll en vs C++ que j'essaie d'executer dans un projet vb.net mais au moment de l'execution de mon programme vb.net q importé une dll .net creer par vb.net [ par ramzi2002 ] bonjour, j'ai creer une dll avec vb.net comment je peut utiliser ses class avec VC++ 2010 DLL faite en C++ avec VB [ par Sniper_Vgaerr ] Je fais un programme de cryptage avec clé privée et publique et je prefere l'interface de VB que celle du C, mais comme le C va plus vite je prefere c comment faire un setup avec vb.net [ par abelbimbi ] juste pour savoir comment après la réalisation d'un projet, comment faire un setup avec vb.net votre réponse est la bienvenue! création de dll sous vb 2005 [ par snowlover18 ] Bonjour a tous. Alors voila. Je suis débutant en c++ et je dois , pour ma société, rajouter des fonctionnalités (boutons et autre) a un logiciel de ge Code::Block DLL pour l'utiliser dans VB [ par runo ] Bonjour, je souhaite créer une DLL en C (ou C++) avec Code::Block que j'utiliserai ensuite sous VB (en fait excel 2003)... Je crée donc mon projet DL encapsuler une DLL C++ [ par alain8550 ] Bonjour, J'ai une DLL écrite en VC++ par une tierce compagnie à laquelle je dois accéder en VB.Net ou C#. Je n'ai évidemment pas accès a problème sur l'utilisation d'une dll sous VB [ par goffle ] Bonjour, J'ai réaliser il y a quelque temps une programme qui me permettait de contrôler le port parallèle grâce a la dll inpout32 sous code::blocks


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales