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

Windows Discussion :

compilation C vers DLL


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut compilation C vers DLL
    j'utilise les jni et je dois donc compiler mon fichier C en un DLL, cependant au moment de la compilation il intervient un problème dans le fichier iostream.h pour ces lignes :
    _CLASSDEF(ios)
    _CLASSDEF(streambuf)
    _CLASSDEF(istream)
    _CLASSDEF(ostream)
    _CLASSDEF(iostream)
    _CLASSDEF(istream_withassign)
    _CLASSDEF(ostream_withassign)
    _CLASSDEF(iostream_withassign)

    quelqu'un a-t-il dèjà eu ce problème ou quelqu'un peut-il m'aider? merci d'avance.......

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: compilation C vers DLL
    Citation Envoyé par duche17
    j'utilise les jni et je dois donc compiler mon fichier C en un DLL, cependant au moment de la compilation il intervient un problème dans le fichier iostream.h pour ces lignes :
    _CLASSDEF(ios)
    _CLASSDEF(streambuf)
    _CLASSDEF(istream)
    _CLASSDEF(ostream)
    _CLASSDEF(iostream)
    _CLASSDEF(istream_withassign)
    _CLASSDEF(ostream_withassign)
    _CLASSDEF(iostream_withassign)

    quelqu'un a-t-il dèjà eu ce problème ou quelqu'un peut-il m'aider? merci d'avance.......
    Visiblement, tu fais du C++. Je rappelle que C et C++ sont des langages différents. Je ne suis pas sûr qu'un code C++ puisse être compilé pour faire une DLL...
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut Re: compilation C vers DLL
    Citation Envoyé par Emmanuel Delahaye
    Je ne suis pas sûr qu'un code C++ puisse être compilé pour faire une DLL...
    On dirait que si : http://www.codeguru.com/Cpp/Cpp/cpp_mfc/tutorials/article.php/c4019/ (exemple pris un peu au hasard mais qui ressemble assez à du C++, non ?).
    Et le couple C++/JNI semble être possible : http://www.science.uva.nl/ict/ossdocs/java/tutorial/native1.1/implementing/cpp.html
    Un problème bien exposé
    est, pour moitié, solutionné. / La connaissance s'accroît quand on la partage, pas quand on l'impose. / La violence est le langage des faibles.

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Bien sûr que du C++ peut être utilisé pour développer une DLL!

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    merci bien pour ces premières infos....
    mais quelqu'un connait -il la commande _CLASSDEF ?
    (désolé je n'y connais rien en C++)
    merci d'avance

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    _CLASSDEF n'est pas standard, et <iostream.h> est obsolète:
    http://c.developpez.com/faq/cpp/?pag...le#SL_iostream
    Donc c'est sûrement une erreur spécifique à ton compilo, qu'il faut préciser. Il doit être ancien...
    Faudrait aussi donner un petit exemple qui provoque l'erreur de compilation.

  7. #7
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut Re: compilation C vers DLL
    Quel environnement de developpement utilises tu ? avec VC++.Net je crée des Dll relatifs à JNI sans problèmes.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    en fait j'utilise la commande
    cl -Ic:\java\include -Ic:\java\include\win32
    -LD HelloWorldImp.c -Fehello.dll

    sous l'invite de commande de visual studio

    les erreurs sont les suivantes :
    C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\iostream.h(71) : error C2378: 'ios' : redéfinition ; un symbole ne peut pas être surchargé avec un typedef

    ceci correspond à la ligne _CLASSDEF(ios) de iostream.h

    je suis complètement dans le vague......

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Utilise le dernier VC++:
    http://msdn.microsoft.com/vstudio/express/visualc/default.aspx
    et oublie iostream.h:
    http://c.developpez.com/faq/cpp/?pag...le#SL_iostream

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    ok j'vais essayer merci!

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    en fait le problème vient maintenant de iomanip.h qui permet de communiquer avec une carte d'acquisition.
    Ce fichier appelle iostream.h (j'ai donc changé cet appel avec #include <iostream> ; using namespace std;
    Mais il appelle aussi _defs.h qui sert à quelque chose mais je ne sais pas quoi......

    maintenant mes erreurs interviennent sur les commandes outportb et inportb qui se trouve dans ma classe de base.

    Je sais je dois vous paraitre pas tres doué mais je ne suis pas spécialiste en info.... en fait je dois réaliser une régulation de Température sur un banc de TP et on m'a demandé de la faire en java donc j'ai besoin des jni et de compiler mon fichier C++ en dll.

    merci d'avance!!!!!!!!

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Remplace <iomanip.h> par <iomanip>.
    Je suppose que ton code C++ sert à accéder aux I/O ports... Ca ne fonctionnera pas sous NT/XP.
    outportb / inportb ne sont pas standards, donc spécifiques à chaque compilo. Sous VC++, l'équivalent c'est _inp / _outp
    http://msdn.microsoft.com/library/en-us/vclib/html/_crt__inp.2c_._inpw.2c_._inpd.asp
    http://msdn.microsoft.com/library/en-us/vclib/html/_crt__outp.2c_._outpw.2c_._outpd.asp

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup, j'ai réussi à compiler mon dll!

    Bon en fait je crois que mon gros problème c'est que j'essaye de travailler sur mon pc portable qui fonctionne sous XP alors que le pc où le programme sera implanté est en WIN98 d'où mes problèmes avec ces anciens fichiers.

    Maintenant je crois que j'ai compris je vais pouvoir travailler sur de meilleures bases grâce à vous!

    bonne continuation

  14. #14
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Je le reprécise au cas où : _inp / _outp fonctionneront sous Win98, mais pas sous XP : ton programme sera tué par Windows (instructions privilégiées).

Discussions similaires

  1. compilation final "Winspool.dll"
    Par griffit dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/02/2007, 08h42
  2. creer le *.dcu lors de la compilation d'une DLL ?
    Par Lorenzo77 dans le forum Delphi
    Réponses: 20
    Dernier message: 03/07/2006, 15h59
  3. Mauvais lien vers dll ?
    Par Batou dans le forum C++
    Réponses: 1
    Dernier message: 13/03/2006, 11h30
  4. compilation C vers DLL
    Par duche17 dans le forum C++
    Réponses: 3
    Dernier message: 17/11/2005, 11h08
  5. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46

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