Bonjour à tous!
Je suis en train de développer une application qui gère des imprimantes à cartes sans contact.
Par conséquent j'utilise une librairie que j'importe dans mon projet C++ sous visual studio 6.0.
L'import de la librairie de base fonctionne très bien, mais ce qui me dérange c'est qu'il existe une méthode ULTRA limitée dans cette librairie.
Heureusement, dans le pack de développement fourni par cette marque (Evolis), il y a moyen de compiler ses propres librairies statiques et dynamiques.
Là où cela me pose un problème, c'est que je tombe SYSTÉMATIQUEMENT sur un os nommé OpenBmp.
Cette fonction est définie dans un .cpp du projet permettant de compiler la librairie, mais nul part est fait mention de son prototype.
C'est à dire que toutes les autres fonctions sont définies à la fois dans un .h central, et dans des cpp. Mais cette fonction n'est définie QUE dans un cpp.
Voici le contenu du .h central:
Et la méthode qui est utilisé, et que je voudrais modifier est définie comme suit:
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 #ifdef EVOLIB_EXPORTS #define EVOLIB_API __declspec(dllexport) #else #define EVOLIB_API __declspec(dllimport) #endif extern EVOLIB_API BOOL OpenBmp(char * ,unsigned char * , long *); extern EVOLIB_API void KinYMC(unsigned char *lpMem,long Height, long Width); extern EVOLIB_API BOOL ConvertRVBtoK(unsigned char *lpbRVB,long RVBSize,long Height,long Width,unsigned char *lpBlack,unsigned char type); extern EVOLIB_API int DB32NC(unsigned char * lpMem, long lPos, char color, unsigned char *ucCommand, long lCommandSize, int bPartial, long Min, long Max); extern EVOLIB_API int DB64NC(unsigned char * lpMem, long lPos, char color, unsigned char *ucCommand, long lCommandSize, int bPartial, long Min, long Max); extern EVOLIB_API int DB128NC(unsigned char * lpMem, long lPos, char color, unsigned char *ucCommand, long lCommandSize, int bPartial, long Min, long Max); //extern EVOLIB_API int DB2NC(unsigned char * lpMem, long lPos, char pannel, unsigned char *ucCommand, long lCommandSize); extern EVOLIB_API int DB2NC(unsigned char * lpMem, long lPos, char pannel[10], unsigned char *ucCommand, long lCommandSize); extern EVOLIB_API int DB32C(unsigned char * lpMem, long lPos, char color, unsigned char *ucCommand, long lCommandSize, int bPartial, long Min, long Max); extern EVOLIB_API int DB64C(unsigned char * lpMem, long lPos, char color, unsigned char *ucCommand, long lCommandSize, int bPartial, long Min, long Max); extern EVOLIB_API int DB128C(unsigned char * lpMem, long lPos, char color, unsigned char *ucCommand, long lCommandSize, int bPartial, long Min, long Max); //extern EVOLIB_API int DB2C(unsigned char * lpMem, long lPos, char pannel, unsigned char *ucCommand, long lCommandSize); extern EVOLIB_API int DB2C(unsigned char * lpMem, long lPos, char pannel[10], unsigned char *ucCommand, long lCommandSize);
Je dois avouer une chose, malgré mes quelques années d'expérience de développeur, je n'ai que trop peu manipulé des librairies (qu'elles soient statiques, ou dynamiques), mais j'ai beau tourner dans tous les sens, je ne vois pas pourquoi la librairie pré-compilé fonctionne avec un appel de OpenBmp à 4 arguments, et pas celle que je compile moi-même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part EVOLIB_API BOOL OpenBmp(char *pPathFile, unsigned char *pMem, long *dwSizeNeeded, BITMAPINFOHEADER *InfoHead)
Où dois je déclarer cette foutue fonction pour arriver au même résultat que la librairie pré-compilée.
Et enfin, la chose la plus dingue à mon gout, il semblerait que je n'ai pas à toucher le .h central, car c'est celui que j'utilise dans le projet qui compile (contenant lui-même la librairie pré-compilée)
J'espère avoir donné tous les éléments.
Merci d'avance à tous de votre aide.
PS: J'ai beaucoup à apprendre, et je ne demande que ça.
Partager