Utilisation d'une DLL sans .DEF et .LIB

Résolu
cs_ZJP Messages postés 6 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 9 avril 2008 - 5 juil. 2007 à 19:40
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 5 juil. 2007 à 21:39
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) :
.lib "Blitzpx.dll"
pxBodyCreatePlane%(x#, y#, z#):"[mailto:_pxBodyCreatePlane@12 _pxBodyCreatePlane@12]"
pxBodyCreateCube%(dx#, dy#, dz#, mass#):"[mailto:_pxBodyCreateCube@16 _pxBodyCreateCube@16]"
pxBodyCreateSphere%(radius#, mass#):"[mailto:_pxBodyCreateSphere@8 _pxBodyCreateSphere@8]"
pxBodyCreateCapsule%(height#, radius#, mass#):"[mailto:_pxBodyCreateCapsule@12 _pxBodyCreateCapsule@12]"
pxBodyCreateCylinder%(radius#, height#, nbEdge%, mass#):"[mailto:_pxBodyCreateCylinder@16 _pxBodyCreateCylinder@16]"
pxBodyCreateHull%(vbank*, nvert%,mass#):"[mailto:_pxBodyCreateHull@12 _pxBodyCreateHull@12]"
pxBodyCreateHullFromSSM%(surf%, mass#):"[mailto:_pxBodyCreateHullFromSSM@8 _pxBodyCreateHullFromSSM@8]"


pxCreateTriMeshPmap%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, file_name$, pMap%):"[mailto:_pxCreateTriMeshPmap@24 _pxCreateTriMeshPmap@24]"
pxCreateTriMeshFromPmap%(triangleMesh%, mass#):"[mailto:_pxCreateTriMeshFromPmap@8 _pxCreateTriMeshFromPmap@8]"
pxCreateTriMesh%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, mass#):"[mailto:_pxCreateTriMesh@20 _pxCreateTriMesh@20]"
pxCreateTerrain%(nSize%, bank*, scale_x#, scale_y#, scale_z#):"[mailto:_pxCreateTerrain@20 _pxCreateTerrain@20]"
pxCreateTerrainFromMesh%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, axis#):"[mailto:_pxCreateTerrainFromMesh@20 _pxCreateTerrainFromMesh@20]"
pxCreateTerrainPmap(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, axis#, file_name$, pMap%):"[mailto:_pxCreateTerrainPmap@28 _pxCreateTerrainPmap@28]"
pxTestTriMesh%(entity%, mass#):"[mailto:_pxTestTriMesh@8 _pxTestTriMesh@8]"
pxCreateTriMeshToFile%(vbank*, fbank*, MESH_NBVERTICES%, MESH_NBFACES%, fname$):"[mailto:_pxCreateTriMeshToFile@20 _pxCreateTriMeshToFile@20]"
pxCreateTriMeshFromFile%(fname$, mass#):"[mailto:_pxCreateTriMeshFromFile@8 _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.

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 juil. 2007 à 21:39
hdll = LoadLibrary(...)
ensuite GetProcAddress() pour obtenir pointeurs de fonctions

Pour [mailto:_pxBodyCreatePlane@12 _pxBodyCreatePlane@12] par exemple, le nom exporté devrait être pxBodyCreatePlane à passer à GetProcAddress.

ciao...
BruNews, MVP VC++
3
Rejoignez-nous