comment utiliser Allegro dans une DLL ?

comment utiliser Allegro dans une DLL ? - C - Programmation

Marsh Posté le 14-07-2009 à 23:29:26    

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 :
  1. #ifndef _DLL_H_
  2. #define _DLL_H_
  3. // entête des fonctions  
  4. __declspec (dllexport) int GetBitmap (char*, int);
  5. #endif // _DLL_H_


 
dllmain.c  

Code :
  1. #include "dll.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <allegro.h>
  5. #include <alfont.h>
  6. #include <winalleg.h>
  7. __declspec (dllexport) int GetBitmap (char *_ch , int _h){
  8.     BITMAP *bmp ;
  9.     ALFONT_FONT *user_font;
  10.    
  11.     int _w=0;
  12.     //format pour le codage du texte (ASCII, ascii normal)
  13.     set_uformat(U_ASCII);
  14.     allegro_init();//initialise allegro
  15.     alfont_init();//initialise la font
  16.     //Charge une police
  17.     user_font = alfont_load_font("times.ttf" );
  18.     // change la taille de police
  19.     alfont_set_font_size(user_font, _h);
  20.     //créé un bitmap
  21.     _w = alfont_text_length(user_font, _ch);
  22.     bmp=create_bitmap(_w,_h);
  23.     //initialise le bitmap a 0
  24.     clear_to_color(bmp,0);
  25.     //Déssine "_ch" a patir de la ppolice "user_font" ds le bitmap "bmp" avec la couleur "makecol(r, g, b)"
  26.     alfont_textprintf_ex(bmp, user_font, 0, 0, makecol(0, 255, 0), 0, _ch);
  27.     //libere la memoire
  28.     destroy_bitmap(bmp);
  29.     alfont_destroy_font(user_font);
  30.     alfont_exit();
  31.     allegro_exit();
  32.     return 1; 
  33. }   
  34. BOOL APIENTRY DllMain (HINSTANCE hInst,    // Library instance handle.  
  35.                        DWORD reason,       // Reason this function is being called.  
  36.                        LPVOID reserved)    // Not used.  
  37. {
  38.     switch (reason)
  39.     {
  40.       case DLL_PROCESS_ATTACH:
  41.         break;
  42.       case DLL_PROCESS_DETACH:
  43.         break;
  44.       case DLL_THREAD_ATTACH:
  45.         break;
  46.       case DLL_THREAD_DETACH:
  47.         break;
  48.     }
  49.     // Returns TRUE on success, FALSE on failure  
  50.     return TRUE;
  51. }


 
 
VB2008

Code :
  1. Module Module1
  2.     Public Declare Function GetBitmap Lib "d:\Ecriture_DLL.dll" (ByRef c As Char, ByVal h As Integer) As Integer
  3. End Module


Code :
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Me.Text = GetBitmap("a", 10)
  3. End Sub


 
Merci d'avance !
 

Reply

Marsh Posté le 14-07-2009 à 23:29:26   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed