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 : Compatibilité DLL [ Windows / System ] (cherwam07)

mercredi 20 août 2008 à 14:16:46 | Compatibilité DLL

cherwam07

Bonjour

J'aurai besoin de votre aide sur un problème concernant les DLL.

Je travail en C, j'ai créé une DLL avec devc++.
Donc quelque chose comme :
dll.h
#ifdef BUILDING_DLL
    #define DLL_EXPORT __declspec (dllexport)
#else
    #define DLL_EXPORT __declspec (dllimport)
#endif

DLL_EXPORT int maFonction(void);    
   


dll.c
DLL_EXPORT int maFonction(void){
.
..
...
      



Et j'ai utilisé cette DLL dans un programme, fait également avec devc++, compilé
en incluant dll.h, et en linkant le fichier libdll.a qui avait été généré.
Fonctionnement impeccable.

Ca s'est gaté quand j'ai voulu utiliser cette DLL dans un code compilé avec visual studio.
J'y ai écrit un code C, dans un fichier .c, j'ai bien spécifié de compiler comme du C.
J'ai linké libdll.a (sinon ca ne compile pas, donc signe qu'il reconnait bien la librairie)

Et à l'execution : erreur de windows (envoyer un rapport d'erreur, blablabla), quand le programme
essai d'appeler une fonction de la DLL.
Et le comportement est le même si la DLL est dans le même repertoire OU NON, signe
qu'il ne la cherche même pas.


Alors si quelqu'un a une idée sur la cause de ce problème, il sera le bienvenu ;)

Je penche plutot pour un problème de configuration de visual studio, mais le problème
est peut-etre plus profond.

D'avance merci


mercredi 20 août 2008 à 15:50:45 | Re : Compatibilité DLL

Neo_Fr

Membre Club
Réponse acceptée !
Ce serait plus pratique que tu poste tout le code.

Neo_Fr

mercredi 20 août 2008 à 23:52:18 | Re : Compatibilité DLL

cherwam07

Ce serait plus pratique que tu poste tout le code.

Mais tout y est !
Je recommence : voici EXACTEMENT le code de quelque chose qui ne fonctionne pas.

Avec DEVC++, en C, je crée une DLL.

dll.h :

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


DLLIMPORT void HelloWorld (void);


#endif /* _DLL_H_ */


dllmain.c :
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

DLLIMPORT void HelloWorld ()
{
    printf("Hello World from DLL!\n");
}


La compilation génère
  • DLLtest.dll
  • libDLLtest.a
  • libDLLtest.def

Maintenant le code qui est censé charger et utiliser la DLL

main.c :

#include <stdio.h>
#include <stdlib.h>
#include "dll.h"

int main(void)
{
  HelloWorld();
 
  system("PAUSE");   
  return 0;
}


+ Dans l'éditeur de lien, je link libDLLtest.a

Pas bien compliqué n'est-ce pas ?? (ma vraie appli est plus fournie lol)

Avec DEVC++, l'application de test compile, et fonctionne très bien.

SI je place le même code (celui de l'application de test) dans Visual C++ (2008), en mettant dans les options du projet : compiler comme du C, à l'execution un terminal s'ouvre, "coucou" s'y affiche, et ensuite à l'appel de la fonction : erreur de windows.


Alors qu'en pensez vous ?
DEVC++ genérerait-il mal les DLL ?
Y a-t-il des options dans visual que j'aurai raté ??

Merci









Cette discussion est classé dans : problème, dll, export, compatibilité, devc


Répondre à ce message

Sujets en rapport avec ce message

Problème Glut + Dev C++ [ par Joel ] Je suis désolé de vous emmerder encore avec ça : mais j'essaie depuis 2 jours, j'ai lu tous les messages du forum et pourtant...J'ai mis les dll (glut Problème OpenGL [ par GoldenEye ] Ca ressemble à un mess déjà posé mais ce n'est pas un mess déjà poséJe veux faire un prgm avec glut. J'ai mis dans les options settings de VC++ les li Resources dans DLL [ par jpeg ] J'ai un problème concernant des ressources contenues dans une DLL MFC. Par exemple, lorsque je fais appel à une boite de dialogue contenue dans cette (MS VCpp) Problème de variables [ par YS1 ] J'ai créé une DLL C+PP que je souhaite utiliser dans un programe VB.La fonction principale de la DLL renvoie un certain nombre de variables, qui sont DevC++ [ par fabienGL ] Bonjour,J'aurais aimé savoir comme on pouvait attacher le nom d'un fichier .dll à un projet devC++.Merci.PS:Si quelqun connaît un tut bien sur l'utili problème de copier-coller pour les .h des dll ? [ par ilimo ] bonjour,j'ai trois projets : P1 : dll : contient la classe aP2 : dll : contient la classe bP3 : exe : contient la classe c qui se sert d Memoire partagée de DLL PERDUE [ par vlacnog ] Bonjour,voici mon problème.Je développe une DLL dans laquelle je crée un fichier mappé en mémoire (via CreatFileMapping et MapViewOfFile).De plus, la Problème pour importer une DialogBox depuis une DLL [ par Kheo ] Afin de rendre mon soft skinable j'ai exporté toute les ressources de mon projet vers une DLL que j'imoprte au debut de mon logiciel avec un LoadLibra Problème avec un dll de Borland [ par anaxode ] Je programme avec Borland 6 , mais lorsque je veux montrer mes petits programmes a mes amis ,quand je l'ai execute, une erreur CC3260M.Dll ce produit problème devc++ [ par carlkress ] salut tous le mondech'uis debutant complet total en C et ch'uis en train de suivre les explications pas à pas du livre de K&R sur devC++ et ch'uis blo


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 : 0,390 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é.