moimail007 | Bonjour !
Je veux utiliser Allegro dans ma propre DLL. Je veux utiliser les fonctions de «allegro.h » et «alfont.h» dans la procédure de ma DLL.
La procédure de ma DLL que j’appellerai depuis une application VB2008 doit avoir pour paramètre d’entrées (Char*, int) et me retourner un (pointeur) Bitmap ou tableau d’entiers.
Je vous montre le test que j’ai fait avec DEV C++ et VB2008 , mais qui malheureusement ne fonctionne pas ! ma DLL est compilée sans erreur sans warnings sous DEV C++. mais quand je fais l'appel de ma DLL depuis mon application VB2008 çà génère une erreur
dll.h
Code :
- #ifndef _DLL_H_
- #define _DLL_H_
- // entête des fonctions
- __declspec (dllexport) int GetBitmap (char*, int);
- #endif // _DLL_H_
|
dllmain.c
Code :
- #include "dll.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <allegro.h>
- #include <alfont.h>
- #include <winalleg.h>
- __declspec (dllexport) int GetBitmap (char *_ch , int _h){
- BITMAP *bmp ;
- ALFONT_FONT *user_font;
-
- int _w=0;
- //format pour le codage du texte (ASCII, ascii normal)
- set_uformat(U_ASCII);
- allegro_init();//initialise allegro
- alfont_init();//initialise la font
- //Charge une police
- user_font = alfont_load_font("times.ttf" );
- // change la taille de police
- alfont_set_font_size(user_font, _h);
- //créé un bitmap
- _w = alfont_text_length(user_font, _ch);
- bmp=create_bitmap(_w,_h);
- //initialise le bitmap a 0
- clear_to_color(bmp,0);
- //Déssine "_ch" a patir de la ppolice "user_font" ds le bitmap "bmp" avec la couleur "makecol(r, g, b)"
- alfont_textprintf_ex(bmp, user_font, 0, 0, makecol(0, 255, 0), 0, _ch);
- //libere la memoire
- destroy_bitmap(bmp);
- alfont_destroy_font(user_font);
- alfont_exit();
- allegro_exit();
- return 1;
- }
- BOOL APIENTRY DllMain (HINSTANCE hInst, // Library instance handle.
- DWORD reason, // Reason this function is being called.
- LPVOID reserved) // Not used.
- {
- switch (reason)
- {
- case DLL_PROCESS_ATTACH:
- break;
- case DLL_PROCESS_DETACH:
- break;
- case DLL_THREAD_ATTACH:
- break;
- case DLL_THREAD_DETACH:
- break;
- }
- // Returns TRUE on success, FALSE on failure
- return TRUE;
- }
|
VB2008
Code :
- Module Module1
- Public Declare Function GetBitmap Lib "d:\Ecriture_DLL.dll" (ByRef c As Char, ByVal h As Integer) As Integer
- End Module
|
Code :
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Me.Text = GetBitmap("a", 10)
- End Sub
|
Merci d'avance !
|