Bonjour,
je suis en train de développer des libraires pour windows (et linux), mais je me suis rendu compte que sous windows (MVC et MinGW) je dois utiliser les commande suivante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #if (defined WIN32 || defined WIN64 || defined _WIN64) #define X7S_CDECL __cdecl #define X7S_STDCALL __stdcall #define X7S_EXPORT __declspec(dllexport) #define X7S_IMPORT __declspec(dllimport) #else #define X7S_EXPORT #define X7S_CDECL #define X7S_STDCALL #define X7S_IMPORT #endif
Le seul problème c'est que j'ai vu différente implémentation sur le net et je n'ai pas tres bien compris les différences entre ces dernieres.
D'apres le tutoriel de http://www.codeguru.com/cpp/cpp/cpp_...icle.php/c9855
et la FAQ c++ http://cpp.developpez.com/faq/vc/?page=DLL#MakeDynDll
alors que dans la libraries de OpenCV ils utilisent:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifdef DLL_EXPORTS #define X7S_DECLSPEC X7S_EXPORT #else #define X7S_DECLSPEC X7S_IMPORT #endif
je suis pas sur de comprendre la différence entre chacune et ne trouve pas de bon tutoriel sur le sujet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #ifndef CVAPI #define CVAPI(rettype) CV_EXPORTS rettype CV_CDECL #endif
----
Autre questions:
- je viens de me rendre compte que je n'utilise jamais DLL_IMPORT et pourtant mon projet marche bien. pourquoi?
- A quoi serve X7S_CDECL et X7S_STDCALL ?
- MinGW a l'air aussi d'avoir besoin de ces commandes.
- Il faut utiliser X7S_DECLSPEC seulement pour les class et les functions que l'on utilise en dehors, ou il y a t'il d'autre cas ?
Partager