Bonjour,
je cherche à créer une DLL qui inclut des fonctions et structures de la SDK (Dshow.h) pour ne pas avoir à inclure celle-ci dans mon projet.

voici le .h (DLL.H):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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 IGraphBuilder *_pGB;
et voici le .cpp (DLL.cpp):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
#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;
La compilation fonctionne et IGraphBuilder est bien vu comme une structure.
J'inclus ensuite DLL.h dans mon projet et pas Dshow.h (c'est le but).
je link le .lib.
J'ai vérifié avec dependancy ma DLL est bien dans le projet mais IGraphBuilder n'est plus vu comme une structure (int par défaut) et je ne peux donc pas utiliser de structure de ce type.

Pourriez vous m'indiquer ou ai-je commis une (grossière certainement) erreur ?

Merci d'avance