C++ DLL et exportation
kill4m
Messages postés
224
Date d'inscription
Statut
Membre
Dernière intervention
-
kill4m Messages postés 224 Date d'inscription Statut Membre Dernière intervention -
kill4m Messages postés 224 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila mon problème je créé ma DLL avec ce .h :
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
// Cette classe est exportée de DLL.dll
class DLL_API CDLL {
public:
CDLL(void);
// TODO : ajoutez ici vos méthodes.
};
extern DLL_API int nDLL;
extern DLL_API IGraphBuilder *_pGB;
et ce .cpp
#include "stdafx.h"
#include "Dshow.h"
#include "DLL.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// Il s'agit d'un exemple de variable exportée
DLL_API int nDLL=0;
DLL_API IGraphBuilder *_pGB;
// Il s'agit du constructeur d'une classe qui a été exportée.
// consultez DLL.h pour la définition de la classe
CDLL::CDLL()
{
return;
}
La compilation fonctionne mon .DLL et .lib sont bien créé.
Mon problème est ici : IGraphBuilder *_pGB;
Cette structure est définit dans Dshow.h.
Je souhaite utilisé cette structure dans mon projet sans avoir a inclure Dshow.h.
Mais lorsque j'inclus mon DLL.h dans mon projet IGraphBuilder n'est plus définit et donc erreur.
L'erreur ne vient peut être du fait que mon Dshow n'est pas dans ma DLL ou autre ...
Une idée.
Merci d'avance pour l'aide apportée
voila mon problème je créé ma DLL avec ce .h :
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
// Cette classe est exportée de DLL.dll
class DLL_API CDLL {
public:
CDLL(void);
// TODO : ajoutez ici vos méthodes.
};
extern DLL_API int nDLL;
extern DLL_API IGraphBuilder *_pGB;
et ce .cpp
#include "stdafx.h"
#include "Dshow.h"
#include "DLL.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// Il s'agit d'un exemple de variable exportée
DLL_API int nDLL=0;
DLL_API IGraphBuilder *_pGB;
// Il s'agit du constructeur d'une classe qui a été exportée.
// consultez DLL.h pour la définition de la classe
CDLL::CDLL()
{
return;
}
La compilation fonctionne mon .DLL et .lib sont bien créé.
Mon problème est ici : IGraphBuilder *_pGB;
Cette structure est définit dans Dshow.h.
Je souhaite utilisé cette structure dans mon projet sans avoir a inclure Dshow.h.
Mais lorsque j'inclus mon DLL.h dans mon projet IGraphBuilder n'est plus définit et donc erreur.
L'erreur ne vient peut être du fait que mon Dshow n'est pas dans ma DLL ou autre ...
Une idée.
Merci d'avance pour l'aide apportée
4 réponses
Pour faire plus simple:
- Comment inclure un .h dans une DLL et utilisé ces structures sans inclure le .h dans notre programme principal ?
- Comment inclure un .h dans une DLL et utilisé ces structures sans inclure le .h dans notre programme principal ?
Salut.
Pour utilisé une structure, il faut la déclarer. Ce qui se traduit en général par inclure le .h dans l'unité de compilation (en général le .cpp)
Voilà, il n'y a pas plus simple, si tu veux utiliser une structure il faut que tu la déclares.
Pour utilisé une structure, il faut la déclarer. Ce qui se traduit en général par inclure le .h dans l'unité de compilation (en général le .cpp)
Voilà, il n'y a pas plus simple, si tu veux utiliser une structure il faut que tu la déclares.