begin process at 2012 05 29 06:20:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Erreurss dans la compilation d'une DLL


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

Erreurss dans la compilation d'une DLL

samedi 6 novembre 2004 à 22:42:33 | Erreurss dans la compilation d'une DLL

Mastersam

Bonjour je suis en train de créer une dll pour une interface usb-série ftdi323c (qui est utilisée dans une interface DMX).

J'ai donc les pilotes de cette interface (une librairie FTD2XX.dll, une FTD2XX.lib et le fichier header FTD2XX.h).
Je dois réécrire une dll pour directement exécuter des fonctions sur cette interface.

Lorsque dans mon projet je lie le fichier .lib et que j'inclue mon fichier FTD2XX.h et bien à la compilation de la dll, qui ne comporte que deux fonctions qui n'appelement pas encore de fonctions du FTD2XX, j'ai les erreurs suivantes:


FTD2XX.h:49: error: parse error before "FT_HANDLE"
FTD2XX.h:49: warning: data definition has no type or storage class
FTD2XX.h:50: error: parse error before "FT_STATUS"

FTD2XX.h:50: warning: data definition has no type or storage class
FTD2XX.h:163: warning: parameter names (without types) in function declaration
FTD2XX.h:179: error: parse error before "FT_DEVICE"
....

Le fichier log d'erreur est disponible ici.


Voici les premières ligne du fichier.h qui posent problème:

49 typedef PVOID FT_HANDLE;
50 typedef ULONG FT_STATUS;
... en gros ce sont tous les typedef,


Pourtant ce n'est pas moi qui ai écrit ce code et il est censé marcher puisque sur cette base il y a de nombreuses biblioteques qui ont été crées. J'ai un exemple qui me sert de point de départ, j'ai la source et le résultat qui a été compilé par quelqu'un d'autre, et quand moi je compile ce projet complet j'ai les même erreurs.

Je suis en C avec devcpp. J'ai essayer de créer la même en cpp puisque l'exemple est en cpp, et bien ça donne aussi les erreurs.

Merci d'avance pour l'aide, quelle qu'elle soit. Il doit pas y avoir un gros soucis, juste un petit problème de débutant, c'est ma première utilisation de DLL alors ....








samedi 6 novembre 2004 à 23:27:33 | Re : Erreurss dans la compilation d'une DLL

BruNews

Administrateur CodeS-SourceS
PVOID, ULONG etc sont deja connus de devcpp ?

ciao...
BruNews, MVP VC++
dimanche 7 novembre 2004 à 00:23:24 | Re : Erreurss dans la compilation d'une DLL

Nebula

Membre Club
dllmain.c, faut inclure windows.h avant dll.h :

/* Replace "dll.h" with the name of your header */
#include <windows.h>
#include "dll.h"

Sinon les types sont inconnus, comme le signale BruNews...
dimanche 7 novembre 2004 à 11:35:52 | Re : Erreurss dans la compilation d'une DLL

Mastersam

Bon apparemment il connait les UCHAR et ULONG j'ai juste changé mon erreur d'include et ça a compilé, mais maintenant j'ai un autre problème:


Dans mon programme principal, je charge ma dll, là ça va, mais après je défini ma fonction, elle a l'air d'être bien définie, en tout cas y'a pas d'erreur, mais lors de son appel rien ne se passe.



case CM_OUVRIR_INTERFACE:
int hModDll;
if((hModDll = LoadLibrary(TEXT("Interfaces/OpenDMX-USB.dll"))) == NULL) MessageBox(GetActiveWindow(),"Erreur lors du chargement de la DLL.","Erreur",0);
else{
MessageBox(GetActiveWindow(),"L'interface est bien connectée","C'est bon !",0);
}
typedef void (__cdecl* lpFunc1) (void);
lpFunc1 DMXHelloworld;

DMXHelloworld = (lpFunc1) GetProcAddress((HINSTANCE)hModDll, TEXT("Helloworld"));

break;

case CM_CHECK_INTERFACE:
(DMXHelloworld)():
break;


Et dans ma dll il y a ça :

Pour le fichier.h



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


OPENDMXUSB void HelloWorld (void);


et le fichier maindll



OPENDMXUSB void HelloWorld()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}



C'est vraiment la fonction la plus simple que j'ai fait pour commencer mais déjà ça marche pas


dimanche 7 novembre 2004 à 12:44:14 | Re : Erreurss dans la compilation d'une DLL

Nebula

Membre Club
Toujours vérifier la valeur de retour des APIs...

En l'occurence, regarde le nom exact de la fonction exportée avec un dumper de PE (objdump avec devc++) s'il n'y a pas un @0 derrière.
dimanche 7 novembre 2004 à 12:49:23 | Re : Erreurss dans la compilation d'une DLL

Mastersam

Oula j'ai fait n'importe quoi dans mon code encore une fois,
(DMXHelloworld)(): est en fait DMXHelloworld(); ...

J'ai un peu avancé, j'ai chargé la dll au début de mon programme et défini les fonctions à ce niveau également.

Maintenant quand j'ai mon message CM_CHECK_INTERFACE qui doit juste executer la fonction helloworld de la dll qui affiche une msgbox, j'ai le droit à une belle erreur "ST-Light DMX Control Software a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru" lol, donc je vais chercher du côté de la dll en elle même.

Si j'ai un problème je posterais un nouveau sujet car le problème a changé, sinon merci bcp.




dimanche 7 novembre 2004 à 12:57:18 | Re : Erreurss dans la compilation d'une DLL

Mastersam

Dans le fichier .def de ma dll j'ai:

connectdevice @ 1 ;
HelloWorld @ 2

et j'ai changé ma fonction pour retourner un 0

OPENDMXUSB void HelloWorld()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
return 0;
}

Mais j'ai pas trop compris ce que tu as dit Nebula tu pourrais m'en dire un peu plus ? dumper de PE ....?


dimanche 7 novembre 2004 à 12:59:28 | Re : Erreurss dans la compilation d'une DLL

Mastersam

Et allé encore n'importe quoi, j'ai retourné un 0 dans un void... BIEN !!! Désolé donc je reste sur l'ancienne fonction qui est censé afficher une messagebox et pas une erreur windows ...


dimanche 7 novembre 2004 à 16:44:46 | Re : Erreurss dans la compilation d'une DLL

Nebula

Membre Club
tu déclares le pointeur comme
typedef void (__cdecl* lpFunc1) (void);

hors tu déclares ta fonction comme
__declspec (dllexport) void HelloWorld();

=> conventions d'appel différentes et plantage, vire le __cdecl du typedef ou rajoute le à HelloWorld()
dimanche 7 novembre 2004 à 21:01:36 | Re : Erreurss dans la compilation d'une DLL

Mastersam

Ben je sais pas trop mais j'ai rien touché de ce coté là et ça marche, j'avais juste déclaré mon type à deux endroits et il prenait le mauvais.

Mais je vais essayer ce que tu m'a dit

Merci





Cette discussion est classée dans : fichier, dll, error, ft, ftd2xx


Répondre à ce message

Sujets en rapport avec ce message

Probleme de librairie pour Entrées/Sorties dll (vc++) [ par hypsxn ] Bonjour, En fait voila : J'ai un probleme de "lnk2001" avec Vc++. Je travaille avec FTD2xx.dll et le fichier FTD2xx.lib n'est pas bon. J'arrive a Erreur de compilation ! [ par belette321 ] -= Intro =- Bonjour, J'ai commencer terminer mon DLL mais quand je le compile, dans le fichier .html je re trouve deux erreur j'aimerais bien création d'1 interface [ par amina08 ] bonjour,j'ai un projet console visuel c++ et je veux créer 1 interface pour ce projetje veux créer un fichier dll puis je l'utilise pour construire mo Enlever dépendances au fichier msvcr80.dll [ par Sim 2005 ] Comment faire pour enlever dépendances au fichier msvcr80.dll (et autres) avec visual studio 2005. L'application refuse de s'exécuter sur un ordinateu Comment executer une EXE a partir d'un DLL ? [ par belette321 ] Boujour,Ma question est : "Comment executer une application qui est dans le meme fichier que la notre ?"J'ai essayer, "ShellExecute(0,"open", "ah.exe" #pgramma comment et DLL [ par loicus ] Salut,J'ai juste une petite question très simple.Mon projet utilise un grand nombre de librairie.  Ce grand nombre de fichier fait qu'il devient relat Recompilation dll [ par albert59 ] Bonjour a tous,Voila pour les besoin d'un projet, j'ai bien réussi a decompiler un fichier dll, ensuite j'importe le fichier cs dans studio c#2008 pou Passage d'un String dans une DLL C++ [ par Argile92 ] Bonjour à tous.J'aimerai pouvoir accéder à un fichier texte via une DLL.Je suis dans Excel, avec l'adresse où se trouve mon fichier texte que j'aimera copie de fichier (DLL) [ par mariuscesar ] salut j'ai besoin d'un code en C me permettant de copie une DLL dans un répertoire. urgent svp!! je piannote en C (borland) environnement DOS pour cer Des probleme help!!!!!!!!!!!!!!!! [ par echizen69 ] BonjourJe suis nouveau dans le domaine de la programmation, et la j' ai essayer de créer un fichier .h et un fichier .cppPuis j' obtiens :LIBCD.lib(cr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,406 sec (4)

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