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 :

Intéropérabilité d'une bibliothèque C avec du C#


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Etudiant
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Intéropérabilité d'une bibliothèque C avec du C#
    Bonjour tout le monde,

    Mon but est de générer une dll en C++ afin de l'utiliser plus tard dans un prjet C#. J'ai suivi le tutto sur le lien suivant : http://nico-pyright.developpez.com/t...c2005/interop/

    Dans le projet C++ qui génère la DLL j'utilise la librairie OpenCV et voici la configuration de mon projet C++ pour générer la DLL :
    1. C/C++ -> Génération de code -> Bibliotheque Runtime = DLL multithread (/MD)
    2. Editeur de liens -> Avancé -> Ordinateur cible = MachineX64(/MACHINE:X64)
    3. Propriétés -> Propriétés de configuration -> Répertoires VC++ -> Répertoires Include :
      • C:\OpenCV\opencv\build\include
      • C:\OpenCV\opencv\modules\core\include\opencv2\core
      • C:\OpenCV\opencv\include\opencv2
      • C:\OpenCV\opencv\include\opencv
    4. Propriétés -> Propriétés de configuration -> Répertoires VC++ -> Répertoires de bibliothèques :
      • C:\OpenCV\opencv\build\x64\vc10\lib
      • C:\OpenCV\opencv\build\x64\vc10\bin
    5. Propriétés -> Propriétés de configuration -> Répertoires VC++ -> Répertoires sources :
      • C:\OpenCV\opencv\modules
    6. Propriétés -> Propriétés de configuration -> öditeur de liens -> entrée -> Dépendances supplémentaires :
      • C:\OpenCV\opencv\build\x64\vc10\lib\opencv_core240d.lib
      • C:\OpenCV\opencv\build\x64\vc10\lib\opencv_video240d.lib
      • C:\OpenCV\opencv\build\x64\vc10\lib\opencv_ml240d.lib
      • C:\OpenCV\opencv\build\x64\vc10\lib\opencv_legacy240d.lib
      • C:\OpenCV\opencv\build\x64\vc10\lib\opencv_imgproc240d.lib
      • C:\OpenCV\opencv\build\x64\vc10\lib\opencv_highgui240d.lib


    La génération de la DLL se passe bien et elle est destiné pour un système 64 bits.

    Voici la configuration de mon projet C# :
    • Propriétés -> Générer -> Plateforme = (x86) active
    • Propriétés -> Générer -> Général -> Plateforme cible = x64


    Ensuite, je la DLL générer dans le répertoire avec l'exécutable C# et à l'exécution j'ai l'erreur que vous trouverez dans l'image jointe :

    Généralement cette erreur est un conflit entre 32 bits et 64 bits, mais je vois pas comment la corriger!! quelqu'un aura une idée comment la corriger ??

    Sachant que la configuration d'OpenCV est a priori faite pour un système x64 et que quand j'utilise pas OpenCV dans la DLL générer l'utilisation dans C# fonctionne. donc j'imagine que l'erreur est de côté OpenCV mais je vois pas ou ??

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    hello,
    pour utiliser une dll 64bits avec dllimport tu dois générer une appli .net 64bits également. et dooonnnc.... tu sélectionne ton projet c# et tu click platform => x64.

    bonne soirée

  3. #3
    Membre à l'essai
    Profil pro
    Etudiant
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    hello biyoudidou,
    J'ai essayer de sélectionner les paramètres de mon projet c# et sur platform il y a qu'un seul choix => X86. Comment changer la platefrom pour X64 ?

  4. #4
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Avec Visual Studio Pro :

    -> Gestionnaire de configurations (voir jpg).
    -> Plateforme de la solution active (faire nouveau).
    -> Sélectionner x64.
    Images attachées Images attachées  

  5. #5
    Membre à l'essai
    Profil pro
    Etudiant
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci moldavi pour ta réponse mais malheureusement ça fonctionne pas même si j'ai changer en X64

Discussions similaires

  1. [Débutant] Intéropérabilité d'une bibliothèque C avec du C#
    Par Cool_Boy dans le forum C#
    Réponses: 1
    Dernier message: 13/07/2013, 12h29
  2. [Débutant] Intéropérabilité d'une bibliothèque C avec du C#
    Par Cool_Boy dans le forum C#
    Réponses: 11
    Dernier message: 08/07/2013, 15h22
  3. Réponses: 14
    Dernier message: 05/07/2013, 00h52
  4. Réponses: 9
    Dernier message: 10/01/2008, 16h44

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