Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Pb d'appel de fonctions dans une dll c++ [ Divers / Général ] (psychospire)

dimanche 11 mai 2008 à 21:15:35 | Pb d'appel de fonctions dans une dll c++

psychospire

Bonjour à tous, je vous expose mon problème.
J'essaye de créer une dll en c++ qui sera appelée à partir d'un programme en vb.

Le truc, c'est que j'aimerais appeler à partir de vb une des fonctions de la dll qui elle meme appellera une autre fonction de cette dll.

Pour faire clair, voici en gros ma dll :

extern "C"
{
   ____declspec(dllexport) void Fonction1()
   {
      Fonction2();
   }

   ____declspec(dllexport) intFonction2()
   {
      return 1;
   }
}

Or, à la compilation, j'ai ce beau message :
Fonction2 : undeclared identifier
Fonction2 : redefinition; different type modifiers

Quelqu'un aurait une idée?


dimanche 11 mai 2008 à 21:33:32 | Re : Pb d'appel de fonctions dans une dll c++

SAKingdom

Membre Club
Réponse acceptée !
Si tu veux utiliser fonction2 dans fonction1, il faut que fonction2 soit définit avant fonction1 ou que son prototype soit déclaré:

extern "C"
{
    __declspec(dllexport) int Fonction2();

   __declspec(dllexport) void Fonction1()
   {
      Fonction2();
   }

   __declspec(dllexport) intFonction2()
   {
      return 1;
   }
}

P.S. __declspec prend, normalement 2 _ en préfixe pas 4.


C++ (@++)


dimanche 11 mai 2008 à 22:10:05 | Re : Pb d'appel de fonctions dans une dll c++

psychospire

Effectivement ca marche, c'était tout simple en fait lol merci à toi.
En fait, je demandais ca car j'ai un problème un peu plus compliqué :
Dans ma fonction 1, j'ai une fonction 3 qui prend pour paramètre la fonction 2 :

extern "C"
{
__declspec(dllexport) intFonction2()
   {
      return 1;
   }
   __declspec(dllexport) void Fonction1()
   {
      Fonction3(Fonction2);
   }
}

Cette fonction3 est appelée à partir d'une bibliothèque extérieure et j'ai pas moyen de savoir comment elle marche (je pense qu'elle utilise des pointeurs).

Bref, quand j'appelle la fonction 1 à partir de vb, ce dernier me dit :
Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.

Une idée d'où cela peut venir ? Merci d'avance.


dimanche 11 mai 2008 à 22:13:54 | Re : Pb d'appel de fonctions dans une dll c++

SAKingdom

Membre Club
Quel est le prototype de Fonction3 ?

C++ (@++)


dimanche 11 mai 2008 à 22:24:57 | Re : Pb d'appel de fonctions dans une dll c++

psychospire

Qu'entends-tu par prototype?

dimanche 11 mai 2008 à 22:29:21 | Re : Pb d'appel de fonctions dans une dll c++

psychospire

Je précise qu'avec le programme c++ de base, ma fonction 3 marche tres bien..

dimanche 11 mai 2008 à 23:03:29 | Re : Pb d'appel de fonctions dans une dll c++

SAKingdom

Membre Club
Le prototype inclut le type de retour, le nom de la fonction, ses paramètres et autres petites choses (comme les conventions d'appel par exemple) si il y a lieu.

__declspec(dllexport) void Fonction1();

Ceci est le prototype de Fonction1.
Quel est celui de Fonction3 ?

C++ (@++)


dimanche 11 mai 2008 à 23:11:11 | Re : Pb d'appel de fonctions dans une dll c++

BruNews

Administrateur CodeS-SourceS
La convention d'appel doit être réglée direct au niveau du compilo pour ne pas faire d'erreurs (oubli de préciser ou autre), surtout si cette dll sera exploitée par différents langages.
32 bits : __stdcall
64 bits : __fastcall
La dll sera ainsi au standard de l'API Windows.

ciao...
BruNews, MVP VC++

dimanche 11 mai 2008 à 23:23:03 | Re : Pb d'appel de fonctions dans une dll c++

psychospire

-> Sakingdom : je ne connais rien de cette fonction, c'est ce qui est un peu embetant...

-> Brunews : je dois rajouter __stdcall à chaque fonction de ma dll ou seulement à celles que j'exporte?
Je l'ai ajouté à la fonction1 (celle que j'exporte) et mon erreur à changé : il me dit maintenant qu'il n'arrive pas à trouver le point d'entrée de ma fonction 1.

J'ai écrit :
extern "C"

    intFonction 2()
   {
      return 1;
   }
   __declspec(dllexport) void __stdcall Fonction1()
   {
      Fonction3(Fonction2);
   }
}

Une idée?


dimanche 11 mai 2008 à 23:32:49 | Re : Pb d'appel de fonctions dans une dll c++

SAKingdom

Membre Club
Tu ne connais même pas ses paramètres ? Comment fais tu pour l'utiliser. Si tu y va au pif, c'est un jeu risqué.

Ajoute __stdcall pour les fonctions exportées. On est ainsi être sûr de la façon de les appeler à partir de l'extérieur.

C++ (@++)



1 2

Cette discussion est classé dans : pb, partir, appel, dll, fonctions


Répondre à ce message

Sujets en rapport avec ce message

Appel dll VB6 à partir de C++ [ par stof35 ] Bonjour,Je dois réaliser l'intégration d'une DLL écrite en VB6 par un prestataire externe dans un projet C++. J'ai essayé par des moyens classiques ma appel des fonctions d'un fichier dll [ par hattabfethi ] [C++] pb au niveau d'un .lib [ par Famidoo ] Bonjour, je souhaite générer une DLL.Pour cela ma DLL nécessite un certain nombre de fonctions présentent dans 3 .lib différentes que j'ai créé. Ainsi appel d'une fonction sous dev c++ (fftw) [ par gbreux ] Bonjour,je réalise une dll sous dev c++. J'arrive à créer une dll seulement je fais appel à des fonctions contenue dans des dlls autres qui se situe d Appel d'une DLL à partir d'un code en C ? [ par hitachicm615 ] Bonjour à vous,J'ai un programme que j'ai codé en C.J'ai une carte d'experimentation livrée avec une DLL et je voulais savoir comment l'appeller dans importer une fonction d'un exe [ par Kian_ix ] salut je cherche un moyen d'importer une fonction a partir d'un fichier .exe comme on pourrait le faire a partir d'un fichier .dll, par exemple: PROC C:Plantage du programme lors de l'utilisation de fonctions contenues dans une dll [ par snoussia ] Bonjour,Je suis actuellement en cours de développement d' projet en c sous VS2003  qui utilise des fonctions de communication via les sockets que j'ai Utiliser les fonctions contenues dans des classes d'une DLL [ par romauto750 ] Bonjour à tous,Je me tourne vers vous car je dois utiliser les fonctions d'une dll. Le problème c'est que dans cette dll, il y a plusieurs classes. Je Probleme DLL sous Visual 2008 [ par romainbisson ] Bonjour, J'ai un fichier DLL contenant toutes les fonctions en C me permettant de travailler sur mon projet (pilotage d'un boitier RFID). Ma question créer une dll (appel de deux procédures) [ par vincenzo89 ] Bonjourje débute en C++, sous code block.J'ai un code qui est composé de 3 procédures.Je voudrais créer une dll avec ces procédures (dont une avec des


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 1,778 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.