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 :

appel dll 32bits par c# 64 bits


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 92
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut appel dll 32bits par c# 64 bits
    Bonjour les jeunes.
    Je veux utiliser une DLL C++ dans mon application C#.
    J'ai fait un tout petit programme d'essai pour voir si j'arrivais à appeler la DLL et à exécuter une fonction et ca marche.
    J'ai installé ce même code dans mon application et je n'arrive pas à charger la DLL. J'obtiens un msg d'erreur
    Tentative de chargement d'un programme de format incorrect.
    J'ai cherché sur le Net et il semble que le problème vienne du fait que j'ai une application 64 bits qui veut appeler une DLL 32 bits.
    Ce qui me surprend c'est que je vois dans le csproj de mon programme d'essai une Plateform == > 86 et dans le csprog de mon appli une Plateform AnyCPU.
    Ce qui pourrait expliquer mon problème. Mais je ne vois pas du tout comment j'ai pu arriver à cela. J'utilise le même C# 2010 pour créer les deux programmes. Je n'ai pas trouvé de paramètre dans C# pour fixer la plateforme de sortie.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 226
    Points
    28 226
    Par défaut
    Propriétés du projet/Onglet Générer/Rubrique général et Paramètre "Plateforme Cible"

    x86 --> Force le 32 bits
    x64 --> Force le 64 bits (l'appli ne marchera pas sur une plateforme 32bits)
    Any CPU --> mode mixte. L'appli fonctionne en 32 bits sur une plateforme 32 mais en 64 bits sur une plateforme 64bits.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 92
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Oui, mais c'est bien la le problème. Dans Options/Générer/... j'ai Plateforme avec "(Any CPU) active" affiché dans la box, mais pas d'autre choix possible.

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 226
    Points
    28 226
    Par défaut
    C'est pas "Plateforme" en haut, mais "Plateforme cible" au milieu de l'écran

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 92
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Je ne le vois pas ! Je viens de regarder 3 fois de suite, et je n'ai pas ce champ.
    Dans la fenetre Générer
    En haut j'ai Config et plateforme
    et apres j'ai
    General
    symboles de compilation conditionnelle
    Erreurs et avertissements
    Considérer les avertissements...
    Sortie
    Chemin de sortie
    Générer un assembly
    Mais pas de Plateforme Cible (je suis avec la version Express 2010)
    et la nuit tombe...
    En fait il s'agit d'un projet que j'ai commencé avec une version précédente de C# Et je m'appercois que la fenêtre propriété du projet n'a pas la même allure que celle d'un projet plus récent.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 92
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Merci sevyc64 de t'être penché sur mon problème un vendredi soir !
    Je crois que j'ai compris d'où il venait. En fait il vient de la version Express que j'utilise. Je lis dans la doc Microsoft que le paramètre qui permet de spécifier la plate-forme de sortie n'est pas disponible dans l'environnement de développement en Visual C# Express.
    Par défaut, apparemment il génère une plateforme >86. Mais comme mon application a été batie à partir d'une application qui avait le paramètre Any CPU, mon compilateur a gardé ce paramètre et je ne pouvais pas le changer.
    J'ai reconstruit mon application en définissant un nouveau projet et en ajoutant les éléments que j'avais écrits, et j'ai obtenu une application avec plateforme >86 qui appelle la DLL sans problème (j'arrive à faire tourner ma parabole..)

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 227
    Points : 28 226
    Points
    28 226
    Par défaut
    Effectivement, je n'y avais pas pensé, mais les versions Express ont quelques limitations par rapport aux autres versions. Il est possible que ce paramètre en fasse partie.

    Mais peut-être aurais tu pû essayer, à ce moment là de modifier ce paramètre directement dans le fichier .csproj avec notepad, puis réouvrir la solution et tenter de la compiler.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 92
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    J'ai essayé mais sans succès. J'avais modifié le paramètre platform, mais je me suis aperçu après qu'il apparaissait plusieurs fois dans csproj. Ne sachant pas trop où je mettais les pieds, je n'ai pas insisté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler dll 32bits depuis un process 64nits
    Par pepito3364 dans le forum C++
    Réponses: 7
    Dernier message: 02/04/2015, 16h05
  2. Appel Dll Ecrite en C++
    Par scelines dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 26/07/2005, 11h58
  3. appel DLL C++ en Delphi (pb avec type)
    Par fkerbourch dans le forum Langage
    Réponses: 7
    Dernier message: 11/07/2005, 17h31
  4. [MFC]ActiveX + appel DLL
    Par Xeron dans le forum MFC
    Réponses: 4
    Dernier message: 22/06/2005, 16h39
  5. Appel de procédure par contenu de variable
    Par lil_jam63 dans le forum Langage
    Réponses: 9
    Dernier message: 13/09/2004, 08h05

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