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

 Delphi Discussion :

Utiliser une dll C# avec delphi


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Par défaut Utiliser une dll C# avec delphi
    Bonjour,

    Je debute en delphi et je dois utiliser les fonctions d'une DLL en C#.

    J'ai cru compremdre a travers les nombreux posts que c'est legerement plus complique que d'appeller un simple DLL en C.

    J'ai essaye de suivre les instructions sur cette page :
    http://www.drbob42.com/examines/examin36.htm

    Apres avoir installe ma dll,
    quand je fait appel aux fonctions de ma dll, ca leve une Exception 'EAccessViolation'.

    Auriez vous une piste pour m'aider a avancer ?

    Merci d'avance

    PS : je travaille avec delphi 7 c'est pour cela que je n'ais pas poste dans dotnet

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Bonjour et bienvenue sur les forums de Développez.com

    Sans bouts de code de votre part nous permettant de voir comment vous vous y prenez nous ne pourrons pas vous aider.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Par défaut
    Merci et desole pour le manque d'infos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, OleServer, TCMM18Library_TLB;
    Ma librairie est TCMM18Library.dll

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var
      Form1: TForm1;
     
      NumberOfDevices : Integer;
      ResultComTest : Integer;
      ConfigPath: PChar;
      ThermoPath: PChar;
      PortCOM: PChar;
      mTCMM18Lib : TCMM18Lib;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    initialization
    begin
     
    ConfigPath:= 'C:\Documents and Settings\S.T\Desktop\C#\test.xml';
    ThermoPath:= 'C:\Documents and Settings\S.T\Desktop\C#\Thermocouples.tcdata';
    PortCOM:= 'COM4';
     
     
    NumberOfDevices := mTCMM18Lib.SetConfiguration(ConfigPath,2000);
    end;
    L'execption se leve a l'appel de SetConfiguration.

    en C# set configuration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int SetConfiguration(string aFileName, double aTimerPeriod)
    Il y a deux classes et une structure dans ma dll :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public struct TempData{}
    public class TCMM18Lib{}
    public class MeasureDoneArgs : System.EventArgs{}

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Comme ça brut de fonderie au vu de ce que vous avez envoyé le problème est que vous n'instanciez visiblement pas votre variable mTCMM18Lib.

    Si TCMM18Library_TLB est le fichier généré via le module d'importation comme dans les instructions sur la page que vous avez précédemment cité, alors il y devrait y avoir une classe CoCMM18Lib qui existe ou un truc comme ça et vous devez alors faire un mTCMM18Lib := CoCMM18Lib.Create;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Par défaut
    En effet, la classe CoTCMM18Lib a l'air d'exister mais quand je rajoute cette ligne apres le begin d'"initialization":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mTCMM18Lib := CoTCMM18Lib.Create ;
    Il me fait une autre exception : EOleSysError : 'CoInitialize has not been called'

    Il faut initaliser autre chose je suppose, mais quoi ? :s

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    Mmmh mmh dans ce cas il faut appeler CoInitialize; (définit dans l'unité Windows à priori) avant toute chose

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2015, 10h23
  2. Utiliser une DLL faite en delphi avec VB6
    Par illuch dans le forum API, COM et SDKs
    Réponses: 12
    Dernier message: 23/05/2014, 06h56
  3. Utiliser une dll C# avec vba
    Par Dadedi dans le forum C#
    Réponses: 10
    Dernier message: 29/09/2009, 14h15
  4. Utiliser une DLL Matlab sous Delphi
    Par airefrais dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2009, 10h16
  5. Chargement d'une dll C++ avec Delphi
    Par rudi0 dans le forum Langage
    Réponses: 6
    Dernier message: 26/08/2007, 19h15

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