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++/CLI Discussion :

utiliser une dll system32 avec un projet Windows Form


Sujet :

C++/CLI

  1. #1
    Candidat au Club
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut utiliser une dll system32 avec un projet Windows Form
    Bonjour,

    je developpe une application Windows Form avec Visual C++ 2010.
    J'ai recupere du code ecrit avec VC++ 6, et essaye de l'utiliser. Je me retrouve evidemment avec pas mal d'erreurs. La derniere en date est relative aux conventions d'appel. La fonction timeGetTime() posait probleme, j'ai donc du utiliser ecrire ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    extern "C"
    {
    #include <MMSystem.h>	
    }
    J'ai ensuite eu des problemes de lecture de dll. J'ai du ajouter winmm.dll au repertoire de mon projet, ainsi que dans les proprietes du projet : Linker->Input->Additionnal Dependencies.

    Maintenant, j'ai l'erreur suivante :

    error LNK1107: invalid or corrupt file: cannot read at 0x288
    En cherchant sur des forums et en lisant l'aide Microsotf, il semblerai qu'il faille utiliser des .obj ou .lib correspondant a la dll.
    Le probleme, c'est que je n'ai ni l'un ni l'autre.
    Que dois-je faire? Est-ce que la methode utilisee ici est correcte?
    Merci d'avance pour les reponses.

    Gabriel

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Si vous êtes obligé de faire un extern "C" autour d'un fichier d'en-tête (.h) pour les API Win32, c'est que vous avez soit une très très vieille version, soit une version "bricolée" de ce fichier, ou, le plus probable, vous n'avez pas bien compris le problème et l'extern "C" ne sert à rien.

    Il faut que vous appreniez à lire la documentation.
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Header Mmsystem.h (include Windows.h)
    Sauf cas particulier, vous devriez inclure "Windows.h" et non "Mmsystem.h"

    Library Winmm.lib
    C'est donc "Winmm.lib" qu'il faut ajouter aux "Additionnal Dependencies", pas la dll.

    Normalement, avec VS2010, un plateformSDK est livré et VS2010 est configuré devrait être configuré pour s'en servir. Sur le VS2010 que j'ai devant les yeux c'est un WindowsSDK v7.0A qui est configuré.
    C'est dans ce WindowsSDK/PlateFormSDK que les fichiers d'en-tête (.h) et les librairies (.lib) sont livrés aux développeurs. http://msdn.microsoft.com/en-us/wind.../bb980924.aspx

    Vérifiez que votre VS utilise bien un plateformSDK récent ou téléchargez et installez-le.

  3. #3
    Candidat au Club
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Chine

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Effectivement je patauge pas mal.
    J'ai besoin d'utiliser des CByteArray, et ai donc :

    Windows me repond que je dois utiliser les MFC Shared dll version. Ce que je fais.
    Et j'obtiens donc l'erreur :

    error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
    Quand je supprime l'include windows.h, j'ai 328 erreurs, la majorite dans les fichiers winnt.h et winbase.h.

    Edit
    Et c'est bien le WindowsSDK v7.0A qui est configure.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Houla, mélanger Windows Form et MFC, à l'aveuglette, vous allez tout faire peter.

    J'ai besoin d'utiliser des CByteArray, et ai donc :
    On n'a jamais "besoin" d'un type lié à COM. COM est un standard binaire, vous pouvez utiliser n'importe quel langage, et utiliser ou créer une librairie qui comprenne cette représentation binaire.

    Donc vous n'êtes pas "obligé" d'utiliser les MFC.
    Alors, sauf si vous utiliser vraiment les MFC, n'utilisez pas CByteArray.

    Pouvez-vous nous donner les motivations "profondes" de l'utilisation de CByteArray ?

    Si les MFC sont nécessaires, donnez-nous ces fameuses
    erreurs, la majorite dans les fichiers winnt.h et winbase.h.
    Pas les 328, juste des 10 premières, ça devrait suffire.

Discussions similaires

  1. Utiliser une dll C# avec delphi
    Par Gruick dans le forum Débuter
    Réponses: 8
    Dernier message: 19/06/2008, 10h23
  2. Utiliser une DLL Delphi avec C#
    Par h8ciz dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2007, 16h46
  3. Réponses: 1
    Dernier message: 09/09/2006, 21h52
  4. [COM] Comment utiliser une dll DotNet dans un projet win32 ?
    Par Marmottoc dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 05/05/2006, 15h58

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