CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme creation de dll c++ ( dev-cpp )

jejej
jejej
Niveau 9
25 octobre 2005 à 19:11:23

Bonjour à tous , j´aimerais creer une dll pour un projet en c++ ... je suis alle sur games-creator.org , ils ont un article sur la creation de dll ... en bidouillant avec les options de linkage , j´arrive à "creer" une dll "CreationDLL.dll" qui contient une fonction ( void Fonction() { cout<<" reussi ! "<<endl; }

par contre , j´ai beau essaye , je n´arrive pas a "lire" cette dll : je cree un autre projet , je link comme il faut ( je pense ) : libCreationDLL.a , j´appelle :
__declspec( dllimport ) void Fonction();

mais au linkage , le compilateur affiche :
[Linker error] undefined reference to `_imp___Z8Fonctionv´

et je ne vois pas où peut etre le probleme ... si vous l´avez deja eu , ou si vous savez comment faire , merci beaucoup de m´aider :)

dnob700
dnob700
Niveau 10
25 octobre 2005 à 19:32:30

quand tu dit que tu appelle fonction() tu veux dire que tu la déclare :

void __declspec( dllimport ) Fonction();

puis que tu l´appelle plus loin :
int main()
{
Fonction();
}

Est ce que dans ta DLL la fonction est bien déclaré avec __declspec(dllexport) ?

jejej
jejej
Niveau 9
25 octobre 2005 à 21:18:22

je vais detailler ce que j´ai fait :

// creation de la DLL
nouveau projet (console)(c++)
options du projet ->
-DBUILDING_DLL=1 dans compilateur
et --no-export-all-symbols --add-stdcall-alias dans l´edition des liens
je met type de projet : win32 DLL

et je tape le code suivant :

  1. include <iostream>
  2. include <stdlib.h>

using namespace std;

extern "C" __declspec( dllexport ) void Fonction()
{
cout<<" essai reussi ! "<<endl;
}

je compile , et j´obtient bien une dll appelee DLLEXPORT.dll ( le nom de mon projet )

ensuite , je fais un nouveau projet :
( mode console , c++ )
je tape ce code :

  1. include <iostream>
  2. include <stdlib.h>

using namespace std;

__declspec( dllimport )void Fonction();

int main(int argc, char *argv[])
{
Fonction();
system("PAUSE");
return 0;
}

et je met dans options du projet , edition des liens libDLLEXPORT.a
( le .a qui a ete genere avec la DLL du projet precedent ) ... et quand je compile , j´ai une erreur de linker :
[Linker error] undefined reference to `_imp___Z8Fonctionv´ ... mais je vois pas ce que je peux linker en plus ...
:merci: pour toute aide :)

dnob700
dnob700
Niveau 10
26 octobre 2005 à 02:27:52

Essaye peut-être de créer un nouveau projet DLL plutot que console. Il y a probablement des trucs dans les options du compilo ou du liker que tu as oublié de définir et qu´il définira automatiquement de cette manière.

Kelios
Kelios
Niveau 8
26 octobre 2005 à 16:39:00

Tu compiles avec quel compilo? ´me semblait que declspec était purement VC++ien. Hors là je vois libDLLEXPORT.a , pas .lib, donc ça m´intrigue.

Kelios
---------

jejej
jejej
Niveau 9
26 octobre 2005 à 20:12:31

Dnob700 : ouais , j´ai reessaye avec une dll cree comme ça , mais ça ne marche toujours pas ... je crois que je vais mettre ça de coter en attendant :)

Kelios : je compile avec Dec-c++ ( vs 4992 ) effectivement la lib est en .a , mais le declsepc( dll ( export/import) ) existe aussi , car le "projet predefini " pour faire une dll contient ça :

  1. if BUILDING_DLL
  2. define DLLIMPORT __declspec (dllexport)
  3. else /* Not BUILDING_DLL */
  4. define DLLIMPORT __declspec (dllimport)
  5. endif /* Not BUILDING_DLL */
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment