IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

DLL sans .DEF ou .LIB


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut DLL sans .DEF ou .LIB
    Bonjour,

    Venant de Blitz3D (Basic) et developant depuis peu sous DEVC++ et Code::block, mon problême est le suivant: Comment utiliser des DLLs Classiques ( Utilisable sous VB6 sans problême a l'aide d'une petite moulinette maison fabriquant un module de déclaration en .bas ) en C/C++ sans passer par les .DEF ou .LIB

    Sous Blitz3D, les DLLs sont interfacées a l'aide d'un fichier de définition Ici un exemple concrêt. Je n'ai que la DLL et le fichier de déclaration suivant (extrait) :
    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
     
    .lib "Blitzpx.dll"
    pxBodyCreatePlane%(x#, y#, z#):"_pxBodyCreatePlane@12"
    pxBodyCreateCube%(dx#, dy#, dz#, mass#):"_pxBodyCreateCube@16"
    pxBodyCreateSphere%(radius#, mass#):"_pxBodyCreateSphere@8"
    pxBodyCreateCapsule%(height#, radius#, mass#):"_pxBodyCreateCapsule@12"
    pxBodyCreateCylinder%(radius#, height#, nbEdge%, mass#):"_pxBodyCreateCylinder@16"
    pxBodyCreateHull%(vbank*, nvert%,mass#):"_pxBodyCreateHull@12"
    pxBodyCreateHullFromSSM%(surf%, mass#):"_pxBodyCreateHullFromSSM@8"
     
    pxCreateTriMeshPmap%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, file_name$, pMap%):"_pxCreateTriMeshPmap@24"
    pxCreateTriMeshFromPmap%(triangleMesh%, mass#):"_pxCreateTriMeshFromPmap@8"
    pxCreateTriMesh%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, mass#):"_pxCreateTriMesh@20"
    pxCreateTerrain%(nSize%, bank*, scale_x#, scale_y#, scale_z#):"_pxCreateTerrain@20"
    pxCreateTerrainFromMesh%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, axis#):"_pxCreateTerrainFromMesh@20"
    pxCreateTerrainPmap(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, axis#, file_name$, pMap%):"_pxCreateTerrainPmap@28"
    pxTestTriMesh%(entity%, mass#):"_pxTestTriMesh@8"
    pxCreateTriMeshToFile%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, fname$):"_pxCreateTriMeshToFile@20"
    pxCreateTriMeshFromFile%(fname$, mass#):"_pxCreateTriMeshFromFile@8"
    Extrait du fichier .decls du wrapper de Physx ( Ageia) à transformer en "include_quelque_chose.h" afin d'exploiter cette DLL sous C/C++. Je sais convertir un .decls de Blitz3d vers un "module_quelque_chose.bas" de déclarations pour VB6, mais je rame pour faire la même chose pour le C.


    Merci

    Jean-Pierre.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ZJP972
    Venant de Blitz3D (Basic) et developant depuis peu sous DEVC++ et Code::block, mon problême est le suivant: Comment utiliser des DLLs Classiques ( Utilisable sous VB6 sans problême a l'aide d'une petite moulinette maison fabriquant un module de déclaration en .bas ) en C/C++
    C/C++ ? Ca n'existe pas. Ici, on parle du C.

    Pour Windows, il existe des fonctions de chargement de la DLL et d'initialisation des pointeurs de fonctions. Exemple d'utilisation ici :

    http://delahaye.emmanuel.free.fr/clib/pio/src/pio.c

  3. #3
    Membre actif
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Par défaut
    "LoadLibrary, GetProcAddress et FreeLibrary"
    Solution trouvée. Merci

    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
     
    HINSTANCE hDLL;               // Handle to DLL
    LPFNDLLFUNC1 lpfnDllFunc1;    // Function pointer
    DWORD dwParam1;
    UINT  uParam2, uReturnVal;
     
    hDLL = LoadLibrary("MyDLL");
    if (hDLL != NULL)
    {
       lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, "DLLFunc1");
       if (!lpfnDllFunc1)
       {
          // handle the error
          FreeLibrary(hDLL);       
          return SOME_ERROR_CODE;
       }
       else
       {
          // call the function
          uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
       }
    }

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Merci d'éviter le multipost à l'avenir.
    --> Les règles du forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. .dll sans .lib
    Par gpy1123 dans le forum C++
    Réponses: 1
    Dernier message: 10/04/2009, 09h50
  2. Utiliser une DLL sans le .LIB dans Visual Studio 2005
    Par lekernel dans le forum Visual C++
    Réponses: 5
    Dernier message: 02/08/2007, 08h54
  3. Probleme d'appel d'une dll, sans lib et sans stdcall
    Par tchern dans le forum Visual C++
    Réponses: 8
    Dernier message: 31/07/2007, 16h37
  4. Utiliser un DLL sans .LIb et sans .DEF
    Par ZJP972 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 05/07/2007, 21h39
  5. Appel de DLL sans .DEF ou .LIB
    Par ZJP972 dans le forum C++
    Réponses: 5
    Dernier message: 05/07/2007, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo