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.
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