C/C++ Utiliser une DLL

Inscrit
15 Avril 2011
Messages
457
Reactions
1
#1
Salut à tous, je chercher à utiliser la DLL MapManager partagée par µnKn0wn_H4CK3r -d2p-reader-lecteur-de-maps-dofus-2.904/]ici. La DLL est bien chargée, mais je n'arrive pas à utiliser la fonction "MapManager".

Code:
void (WINAPI* MapManager)(char* d2pFolder); // pointeur sur fonction à utiliser

int main()
{
    HINSTANCE dllHandle=LoadLibrary("MapManager.dll"); // dllHandle est différent de NULL, donc la DLL est chargée
    MapManager=GetProcAddress(dllHandle,"MapManager"); // MapManager vaut NULL...
}
Merci de m'éclairer.
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#2
La dll ne peut etre utiliser qu'en .net je pense... A valider.
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#3
Ah bon ?! Je pensais qu'on pouvait utiliser une DLL écrite dans un autre langage.
 
Inscrit
21 Janvier 2012
Messages
39
Reactions
0
#5
Tu peux utiliser une DLL native dans un programme en .net, mais pas l'inverse (enfin, c'est peut être possible mais pas vraiment conseillé)
 
Inscrit
19 Octobre 2010
Messages
214
Reactions
0
#6
Bonjour,

dans le magnifique monde de Windows, il existe deux types de programmes, écrits dans deux types de langages : les programmes "managés" (les langages .NET, comme C# ou VB .NET) et les programmes "natifs" ou "non managés" (C, C++, VB pas très net...).
Il existe une troisième catégorie en fait, constituée des langages interprétés, comme notamment tous les langages de scripts. Sans parler de Java qui est similaire aux programmes en code managé, mais c'est pas tout à fait pareil et pas du tout compatible car ce serait trop facile.

Les programmes en code natif (non managés) sont directement écrits en langage machine, executable par les processeurs x86.
Alors que les programmes en code managé (.NET) sont écrits dans un langage intermédiaire (IL) qui est interprété par une machine virtuelle (le Framework .net). Le principe est le même pour les programmes en Java (mais avec une machine virtuelle différente : la machine Java).

C'est pourquoi les DLL managées sont utilisables simplement dans les programmes managés. Et les inversement, les DLL non managées sont utilisables simplement dans les programmes non managés.

Maintenant il existe des astuces pour appeler une DLL d'un type depuis un langage d'un autre type, mais c'est beaucoup plus galère (cf les liens déjà fournis).
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#7
Salut, désolé pour le déterrage de sujet et pour l'absence de réponse, mais j'ai un peu zappé Cadernis ces derniers temps.
Je ne connaissais pas le terme de programme natif et le fonctionnement du framework .NET. De plus, j'étudie en cours le Java (et donc la JRE), grâce à ça et à l'explication de FF, je comprends mieux le terme de langage compilé et interprété.
Merci pour votre aide, je vais donc traduire entièrement la DLL MapManager plutôt que de chercher à l'utiliser, j'avais déjà commencé et en plus, en cas de modification d'Ank@ama, je ne serais pas emmerdé.

Sujet clos.
 
Haut Bas