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 :

creation dll et wmf


Sujet :

C++

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Par défaut creation dll et wmf
    Bonjour,

    voilà j'essaye de creer un fichier .wmf mais sans utiliser les choses specifiques a microsoft (avec Graphics et Metafile)
    J'aimerai creer une dll pouvant etre distribuer "sans dependance" (si ce n'est avoir windows ) : juste envoyer le dll et c'est tout.

    Creer une dll avec des fonctions dedans => ca ok

    maintenant j'aimerai creer un fichier wmf... et à par avec un Metafile du .Net je ne sais pas comment faire !!!

    merci de votre aide

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    tu veux le faire sous quel os ?

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Par défaut
    je suis sous windows XP et j'aimerai une dll qui soit diffusable sur les windows XP .

    J'ai vu en incluant "windows.h" avec la methode CreateMetaFile mais j'ai un link error :

    exportIMG.obj : error LNK2001: symbole externe non résolu "extern "C" struct HDC__ * __stdcall CreateMetaFileW(wchar_t const *)" (?CreateMetaFileW@@$$J14YGPAUHDC__@@PB_W@Z)
    merci

    P.S: oups j'avais oublié d'ajouter gdi32.li : donc l'erreur de LINK c'est réglé

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu lies à Gdi32.lib ? (libgdi32.a pour MinGW)

    PS: Il n'y a pas l'air d'y avoir du .Net, là-dedans...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Par défaut
    nop en fait avant j'utilisait .NET avec un gcnew Metafile(..)

    Maintenant j'ai vu un CreateMetaFile : est ce mieux avec ce que je veux ?



    D'ailleur petit prob :

    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hDCMeta = CreateMetaFile( (LPCWSTR) "test.wmf");
    mais le nom du fichier qu'il me crée est ecrit en chinois/japonais (au choix) !!!!

    QQun connait il un tuto sur cette methode ? car là je ne vois pas !!!

    merci

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Déjà, on ne caste JAMAIS une chaîne littérale : S'il faut un cast, c'est qu'elle n'est pas du bon type, et c'est le pointeur qu'on caste ---> Tu aurais pu causer un plantage.

    Ici, je pense que le mieux est d'y aller en TCHAR (<windows.h>, <tchar.h>) :
    Code C/C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    hDCMeta = CreateMetaFile( TEXT("test.wmf") );

    Si ça ne marche pas et qu'il te faut absolument un LPCWSTR au lieu d'un LPCTSTR, tu utilisera L"test.wmf"
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Par défaut
    ok j'en prends note

    par contre je ne connais pas le type "LPCWSTR"

    quel est le meilleur moyen à partir d'un "string" de convertir en LPCWSTR ?

    merci

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    LPCWSTR == const wchar_t *
    LPCSTR == const char *
    LPCTSTR == L'un des deux, selon le mode. (TCHAR == char ou wchar_t)

    "abc" est une suite de char.
    L"abc" est une suite de wchar_t.
    TEXT("abc") est l'un des deux, selon le mode.

    Pour convertir avec les objets C++, tu as en C++ standard:
    std::string == std::basic_string< char >
    std::wstring == std::basic_string< wchar_t >
    (par contre, il n'y a pas de typedef pour les strings de TCHAR).

    Pour convertir de l'un à l'autre, tu peux utiliser des ostringstream et wostringstream : L'opérateur d'insertion de flux accepte toujours les deux formats, donc avec un wostringstream tu peux convertir une string en wstring.
    Et la foncton membre wstring::c_str() te donnera un const wchar_t *, donc un LPCWSTR.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/02/2009, 10h38
  2. Creation DLL réutilisable avec WinDEv
    Par CTotophe85 dans le forum C++
    Réponses: 2
    Dernier message: 09/09/2008, 16h25
  3. Creation dll et utilisation dans appli C#
    Par moulefrite dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/08/2008, 09h46
  4. probleme creation dll
    Par devin59 dans le forum C#
    Réponses: 3
    Dernier message: 21/01/2008, 20h54
  5. creation DLL dev-cpp
    Par gaut dans le forum Dev-C++
    Réponses: 4
    Dernier message: 29/01/2004, 18h15

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