begin process at 2012 05 28 21:51:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Comment utiliser Allegro dans ma DLL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment utiliser Allegro dans ma DLL

mardi 14 juillet 2009 à 23:50:36 | Comment utiliser Allegro dans ma DLL

moisylvain

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 ce 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 ca génere une erreur.

dll.h

#ifndef _DLL_H_
#define _DLL_H_

// entête des fonctions
__declspec (dllexport) int GetBitmap (char*, int);

#endif // _DLL_H_

dllmain.c

#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

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

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 !
 

mardi 21 juillet 2009 à 15:41:21 | Re : Comment utiliser Allegro dans ma DLL

rt15

Membre Club Administrateur CodeS-SourceS

Salut,

En VB, les Integer font 16 bits alors que les int du C/C++ en font 32. Utilise des Long dans ton VB.

Utilise l'utilitaire depends pour vérifier que ta dll exporte bien les symboles comme tu les attends (Pas de décoration...).

Assure toi de la convention d'appel. VB -> stdcall, C/C++ -> cdecl par défaut. Donc passe la fonction de ta dll en stdcall.

__declspec (dllexport) int __stdcall GetBitmap (char*, int)



Cette discussion est classée dans : font, dll, allegro, bitmap, alfont


Répondre à ce message

Sujets en rapport avec ce message

dev++/bimap/allegro [ par cognac ] Bonjour,Je tente d'afficher un bimap (avec dev++ et allegro) que voici:BITMAP *my_pic; my_pic = load_bitmap("laberge.bmp", NULL); acquire_screen();bli allegro : charger 1 bitmap [ par Djedie ] je voudrais afficher 1 bitmap en 800 600 et en 24 ou 32 Bits.je fais :load_bitmap(...)ouload_bmp(...)j'arrive pas trop a voir la difference, sachant q [allegro]Pb de base [ par kjus ] Valla g installé la lib pour vc++6seulement voila mon premier code allegro :et pas moyen d'afficher quoi que ce soit (g aussi essayé de faire buffer=l Les fonctions d'une DLL [ par garslouche ] Salut,je voudrais pourvoir connaitre les fonctions externes d'une DLL (comme le fait l'outil Depends de VC++).Idéalement j'aimerais aussi voir le type Création d'une DLL [ par Kevb37 ] Salu tt le monde..Est-ce que qq (je suis sur que oui) connaitrai la façon de construire une DLL : je trouve pas grand-chose (les tutoriels et sources Bitmap dans un DC [ par garslouche ] Salut, je voudrais dessiner un bitmap dans un DC(MFC ou Win32)j'ai trouvé SetDIBits mais je n'arrive pas à récupérer le BITMAPINFO à partir de mon HBI allegro+probleme de creation de buffer dans une fonction [ par xboxut ] salut je suis en train de monter mon moteur 2D avec allegro et j ai un bleme au niveau d une fonction.void buffscroll(BITMAP *bmp) //la c la fonction COM et DLL [ par garslouche ] Bonjour,je voudrais utilise ShellExecute dans une DLL mais il faut apparement un header différent de pour un EXE...Je sais c bizarre....Ca marche avec questions sur allegro (compteur, bitmap..) [ par Milli ] bonjour, j ai plusieurs question a propos d allegro:1/ comment réaliser un compteur2/quand on quitte une fonction, est ce que les bitmap que l ona c Redimensionner un controle [ par DJBACON_17 ] Voila j'explique mon probleme : j'ai fait une dll en C++ avec VC++6 dans laquelle je fais une rotation de bitmap.Ce bitmap est contenu dans un picture


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales