begin process at 2012 02 11 01:22:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

comment inclure une dll dans une dll?


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

comment inclure une dll dans une dll?

dimanche 18 avril 2004 à 13:40:32 | comment inclure une dll dans une dll?

giova


Bonjour.

Je cherche a faire une dll qui servent d'interface en C pour une autre dll qui elle est en C++

je suis debutant, j'arrive a faire une dll basique, a l'importer dans du code sous visual et donc l'utiliser sans probleme en employant la methode suivante :

#include "madll.h"

propriete du projet, editeur de liens externes, ressource supplementaire : madll.lib

Mais si je fais ca dans ma nouvelle dll servant d'interface j'obtiens toute une floppée d'erreurs a la compilation, et la vraiment je bloque. quelqu'un a t'il une idée du probleme?

je cherche egalement un tutorial serieux et complet sur comment faire des dll. J'ai deja consulté msdn, qui offre une presentation avancée des dll, mais n'explique pas comment faire :/

merci d'avance pour votre aide.
dimanche 18 avril 2004 à 17:33:41 | Re : comment inclure une dll dans une dll?

ymca2003

donne les erreurs ça vient peut-être d'un autre pb.

le bouquin de Richter (en anglais) explique les dll :
http://brunews.free.fr/brunews/download/JR4.zip
http://brunews.free.fr/brunews/download/JR4Sources.zip
lundi 19 avril 2004 à 10:16:30 | Re : comment inclure une dll dans une dll?

giova


merci ymca pour le livre ca va suremlent beaucoup m'aider.

sinon pour les erreurs, bah en fait il m'en genere 100.

alors plutot que de te les envoyer je peux te dire comment obtenir ce resultat en 15 secondes chrono si tu as visual C++ 2003 et XP, sinon dis moi et je t'enverrai le rapport de compilation :

dans visual nouveau projet Win32 console
dans l'assistant de creation de projet cocher dll
dans le .cpp de la dll faire un include "gdiplus.h"
et dans les options du projet, comme cité un post plus haut, dans les liens externes rajouter gdiplus.lib

compiler et admirer le defilé.
lundi 19 avril 2004 à 14:48:31 | Re : comment inclure une dll dans une dll?

ymca2003

avec #include <objbase.h> avant #include <gdiplus.h> ca marche nettement mieux.
lundi 19 avril 2004 à 17:38:52 | Re : comment inclure une dll dans une dll?

giova


Hmmmm :/ bon je nage complet mais alors vraiment complet la!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

c'est quoi objbase?

voila pourquoi je nage complet :


Sur les dll, j'ai lu que pour la maintenance il etait preferable de n'avoir qu'un seul .h hors par defaut le wizard de visual crée dans mon projet dll stdafx.h et stdafx.cpp

hors lorsqu'on distribue la dll, si j'ai bien compris, il faut fournir le .dll, le .lib et le .h . Le probleme c'est que si tout le monde donnait stdafx.h bah on bloquerait vite :)

Alors vous allez me dire bah tu fait un madll.h et c'est ca que tu distribue. Ok alors je cherche a me debarasser de stdafx.h en le remplacant par madll.h, et en faisant le include qui faut dans madll.cpp.

Peut etre allez vous me dire "mais non ne te debarrasse pas de stdafx, tu en as besoin", oui mais si je fais des includes dedans, je suis obligé dans madll.h de faire un include de stdafx sinon dans madll.h il ne sera pas de quoi je lui parle quand je veux utiliser quelquechose d'inclu. Du coup je suis obligé de fournir le madll.dll, le madll.lib, madll.h et stdafx.h !!!!!!!!!!!!!!!!

De toute facon, si je place le contenu de stdafx.h dans madll.h, et que je remplace donc le #include "stdafx.h" par #include "madll.h" dans madll.cpp, je ne sais absolument pas pourquoi j'obtiens alors sur madll.h un "fin de fichier inatendu" . Pourquoi madll.h ne passe pas alors qu'avec stdafx.h il n'y a pas de probleme? (rappel ils ont rigoureusement le meme contenu)

Je suis donc revenu a l'etat initial de la dll avec cet ~{#{[#~de stdafx.h, dedans je fais les includes pour objbase et gdiplus. Pas de pb a la compilation.

dans madll.h j'inclus stdafx.h, pour pouvoir utiliser ce qui est inclus dans stdafx.h, et bien non ca me dit grossierement que les types n'existent pas bref les includes ne sont pas fait :( (deprimant)

Bref, j'ai essayé mille et une chose et rien n'y fait je collectionne les erreures de compilation depuis que j'essaye de faire une dll appellant une autre dll, je galere depuis vendredi je ne vais pas tarder a etre chauve a force de m'arracher les cheveux.

quelqu'un aurait il un code simple demontrant une dll important une autre dll et utilisant simplement une de ses fonctions?
lundi 19 avril 2004 à 22:55:26 | Re : comment inclure une dll dans une dll?

ymca2003

tout d'abord, StdAfx.h (et .cpp) sert pour les entêtes précompilés (pour aller plus vite) et comprend simplement les includes du projet qui ne sont jamais modifiées (celle des libs standard C, API...). Si tu n'en veux pas, créer un projet win32 exe ou dll VIDE.

en effet, pour distrubuer une dll, il faut le .dll, le .lib et le .h
mais rien ne t'emêche d'aboir d'autre .h dans ton projet dll.
dans le .h il faut simplement mettre le prototype des fonctions de la dll.

en ce qui conceren objbase.h, il contient simplement une définition de type nécessaire avec gdiplus.h, comme tu doit aussi avoir windows.h.


voici un ex de dll :

stdafx.h : entêtes précompilées.

#ifndef AFX_STDAFX_H_INCLUDED_
#define AFX_STDAFX_H_INCLUDED_


// entêtes API Win32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#endif // AFX_STDAFX_H_INCLUDED_



stdafx.cpp : entêtes précompilées.

#include "StdAfx.h"


icons.h : l'entête de la dll

#ifndef AFX_ICONS_H_INCLUDED_
#define AFX_ICONS_H_INCLUDED_
//==========================================// Macro pour imporation ou exportation (ICONS_EXPORTS à définir pour construire la dll)
//==========================================#ifdef ICONS_EXPORTS
#define ICONS_API __declspec(dllexport)// WINAPI
#else
#define ICONS_API __declspec(dllimport)// WINAPI
#endif


//==========================================// Fonctions de la librairies.
//==========================================
extern "C"
{
HICON ICONS_API Icons_LoadIcon(int Id);
BOOL ICONS_API Icons_ExtractIcon(int Id, LPCTSTR lpszFileName);
}
#endif // AFX_ICONS_H_INCLUDED_



icons.cpp : point d'entrée de la dll :

#include "StdAfx.h"
#include "Icons.h"

HINSTANCE g_hDllInstance= NULL; // instance de la librairie


BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// sauvegarde instance de la librarie
if(dwReason == DLL_PROCESS_ATTACH)
g_hDllInstance = hInstance;
// retour
return TRUE;
}

HICON ICONS_API Icons_LoadIcon(int Id)
{
...
}


BOOL ICONS_API Icons_ExtractIcon(int Id, LPCTSTR lpszFileName)
{
...
}


icons.def : fct exporteés de la dll

EXPORTS
Icons_LoadIcon
Icons_ExtractIcon


il peut ensuite y avoir d'autre .h et .cpp. chaque cpp devra avoir #include "sdtafx.h" au début.

tous les prototype des fct exportées doivent être dans "icons.h", seule entête à distribuer avec la dll et le .lib


pour l'utilsation que ce soit un exe ou une dll, c'est pareil, inclure icons.h dans le source et linker avec le .lib


Cette discussion est classée dans : cherche, probleme, dll, interface, inclure


Répondre à ce message

Sujets en rapport avec ce message

Probleme D'ordi [ par Ben-J ] J'ai un Probleme...Suite a une erreur de manip j'ai un prob avec les dll de mon ordi , la plupart des app bug a cause d'une exportation manquante NTDL Urgent je cherche la Dll vcljpg60.bpl [ par ROBOSS75 ] j ai installer Borland C++ V6 et ca marche pas kan je tante de l éxécuté il y a message "un fichier .DLL requiq, VCLPG60.BPL, n'a pas été trouvé" s il Cherche dll [ par baj ] salut tlm Je suis a la recherche de 2 dll :une pour permettre d'envoyer des mail avec attachementune pour pouvoir modifier l'aspect de la fenetre (com C# probleme d'exportation d'exe [ par golum ] voila g écrit un prog en C# mais bon si je fait mon exe il me manque une dll de base pour l'écécuter (cette dll est payante).suis-je oubligé de faire Comment inclure des ressources dans une DLL [ par Kheo ] Je cherche a inclure toutes mes ressources (DIALOGBOX, BITMAP etc .. ) dans une DLL afin de rendre mon soft skinable en changeant de DLL et par conséq Probleme de Dialog VC++ [ par anaya ] Bonjour,J'espere bien que vous allez m'aider, voila mon probleme:Mon programme marche a merveille avec Domodal(); mais moi je dois utiliser autre cho Accéder à l'interface d'une Dll [ par yoyocestmoi ] Bonjour,J'ai développé une petite librairie (Regular DLL sous VC++) et j'aurais voulu savoir si il existait un moyn pour voir son interface (cad métho probleme avec GetTcpTable de iphlpapi.dll [ par NikatorS ] Voila je cherche a utiliser GetTcpTable de iphlpapi.dll. J'ai trouver sur ce site une source mais en vb alors voulu la convertir. mais bien que je n'e Inclure une Dll dans un projet win32 console application [ par Fanu ] Salut tlm.J'ai commencé un programme de synthèse audio sur une app win32 console application (étant donné que pour l'instant je ne sais faire que ca.. PB d'E/S fichier avec une DLL [ par huberdine ] Je cherche a faire une DLL en C, dans la quelle je puisse faire des E/S fichier.Mon probleme est le suivant : la fonction fopen refuse de fonctionner


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,186 sec (4)

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