Accueil > Forum > > > > Importer une DLL C dans un prog C#
Importer une DLL C dans un prog C#
jeudi 1 décembre 2005 à 16:51:02 |
Importer une DLL C dans un prog C#

ybuchheit
|
Bonjour,
Je dois utiliser des fonctions d'une dll écrite en C. J'ai uniquement les prototypes des fonctions, je n'ai pas accès aux sources. Voici mes prototypes:
int funcA()
int funcB(char* param1, long param2)
la fonction B prend en paramètre un pointeur...J'ai donc créer un prog en cs utilisant les fonctions en les redéclarant dans une classe Wrap de cette manière:
[DllImport("C:\\madll.dll", CharSet=CharSet.Ansi)]
public static extern int funcA();
[DllImport("C:\\madll.dll", CharSet=CharSet.Ansi)]
public static extern int funcB(
[MarshalAs(UnmanagedType.LPStr)]
string param1, long param2);
J'appele mes fonctions de cette manière:
iRetour=Wrap.funcA();
string sChaineTraite="";
iRetour=Wrap.funcB( sChaineTraite + '\0', 10);
L'appel de la fonction A marche à chaque fois, par contre la fonction B ne marche que si je mets une chaîne vide, sans caractère. Je pense donc qu'il y a un problème pour transformer le string en char*. Quelqu'un aurait il une idée?
|
|
jeudi 1 décembre 2005 à 17:46:50 |
Re : Importer une DLL C dans un prog C#

Lutinore
|
Salut, n'oublie pas que les instances du type String sont immuables, utilises StringBuilder si la fonction doit modifier la chaine.
|
|
vendredi 2 décembre 2005 à 05:38:37 |
Re : Importer une DLL C dans un prog C#

LUDINSKI
|
Salut ybuchheit,
Essayes voir d'importer ta méthode de cette façon :
DllImport( "C:\\madll.dll" )] public static extern int funcB( [MarshalAs( UnmanagedType.LPTStr )] string param1, long param2 );
Si tu est sous Windows NT ou Windows XP, il faut encoder les chaîne en Unicode ! Avec cet attribut, c'est géré automatiquement...
|
|
vendredi 2 décembre 2005 à 09:50:39 |
Re : Importer une DLL C dans un prog C#

ybuchheit
|
Merci pour vos réponses.
Pour LPTStr çà ne marche pas non plus.
Pour le StringBuilder, je n'arrive pas à l'utiliser, le compilateur me met " Le type ou le nom d'espace de noms 'StringBuilder' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)".
Mes using sont actuellement "System;" et "System.Runtime.InteropServices;"
|
|
vendredi 2 décembre 2005 à 09:52:43 |
Re : Importer une DLL C dans un prog C#
|
lundi 5 décembre 2005 à 08:40:01 |
Re : Importer une DLL C dans un prog C#

ybuchheit
|
Merci, j'ai essayé avec un StringBuilder mais çà ne marche toujours pas
|
|
jeudi 8 décembre 2005 à 04:42:37 |
Re : Importer une DLL C dans un prog C#

Lutinore
|
[ DllImport( "C:\\madll.dll", CharSet = CharSet.Ansi ) ] public static extern int funcB( [ MarshalAs( UnmanagedType.LPStr ) ] string param1, long param2 );
Déja le long en C/C++ est un Int32 en C#.
iRetour=Wrap.funcB( sChaineTraite + '\0', 10);
On ne s'occupe pas du caractère nul '\0' en C# ( sauf cas particuliers.. ), réessaye avec le StringBuilder et le Int32 et sans ce caractère nul.
Au pire marque ton prototype unsafe ( compile en mode unsafe aussi ) et remplace ta chaine par un pointeur, de type byte* pour une chaine Ansi et char* pour une chaine Unicode. Tu peux fixer ( instruction fixed ) un tableau en mémoire pour passer son pointeur.
|
|
Cette discussion est classée dans : int, dll, prog, fonctions, charset
Répondre à ce message
Sujets en rapport avec ce message
Dll c++ utilisée en C# [ par Florenzau ]
Bonjour à tous, Je dois utiliser une Dll réalisée en C++ sur un programme en C#. J'arrive à utiliser des fonctions simples telles que : c++ : void
Retour d une DLL [ par ZaRMaS ]
Salut a tous, J ai un petit probleme avec ma dll code en C. Elle retourne un char * et je cherche a recuperer en csharp le retour de cette fonction. V
dll, arguments non valides lors de l'utilisation [ par moi411 ]
Bonjour tout le monde, J'ai créer une dll avec une fonctions de tri (que je nomme dllTri). Je passe en paramètre la liste à trier et je récupère la l
Passer un pointeur sur tableau de structure [ par olibara ]
BonjourDepuis C# j'aimerais appeller une Dll ecrite en CJ'ai plusieurs fonctions dont certaines utilisent un pointeur sur tableau de structure, commen
Utilisation d'une DLL delphi dans du code managé C# [ par Prince Dark ]
Bonjour,Je suis actuellement dans le but d'utiliser des fonctions non managées contenues dans une DLL ecrite en delphi dans mon code C#.La DLL est fix
Pointeurs... Encore et toujours... [ par darknoon29 ]
Nous avons toujours quelques difficultés, voilà ce qu'on a écrit: [DllImport("ordonantsdll.dll")] public static extern System.IntPtr
Lister les fonctions contenu dans une DLL [ par Tuizi ]
Bonjour, J'aurais aimer savoir si il y avais un moyen "simple" en C# pour lister les fonctions contenu dans une DLL?MerciTuizi
DllImport [ par RMI ]
Bonjour,Je dois dois faire le lien entre une dll C++ et C#La fonction [DllImport(DLL_NAME, CharSet = CharSet.Ansi, EntryPoint = "MvaSensorNew")]
Apeller des fonctions C++ (via une dll) depuis C# [ par jmengelle ]
Bonjour, bien que je ne sois pas du tout expérimenté dans ces langages, on m'a demandé depuis une application C# d'apeller des fonction C++ qui seront
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Hero
Entre 550€ et 550€
|