begin process at 2012 02 09 01:41:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

C# et Dll C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

C# et Dll C++

jeudi 24 mai 2007 à 18:26:52 | C# et Dll C++

rbonnal

Bonjour a tous !
 

Je répète que suis aussi fort en C# que Sarko en roller !!!

J'ai un problème assez embêtant. J'importe une DLL C++ en C# de la manière suivante :

[DllImport("DocFileATL.dll")]
        publicunsafestaticexternint GetInfo(int* FileNum, char* PVers, int* FPSign);
     

Je fait appel a la fonction de cette façon : 
 
unsafe
      {

            char* PVers = null;
            GetInfo(&FileNum, PVers, & FPSign); 
       }


La il me met "invalid ptr" coté CPP (même si je lui affecte une valeur avant le CPP).

La fonction GetInfo modifi tous les arguments, ca marche sur les 2 int mais pas sur le char *. A la base je n'avais pas de char * mais une string, ca n'a pas marcher non plus. J'ai aussi essayer [MarshalAs(UnmanagedType.LPTStr)] string

Pour le type de PVers.

Est-ce que quelqu'un connais un tuto ou connais la façon de faire pour que ca marche.

jeudi 24 mai 2007 à 19:16:03 | Re : C# et Dll C++

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !
Salut, attention 'char' fait 2 octets en C# et 1 en C++, utilise sbyte* ou IntPtr ou un StringBuilder avec une taille pré-initialisé.
jeudi 24 mai 2007 à 22:22:50 | Re : C# et Dll C++

ShareVB

Réponse acceptée !
salut,

tu as l'attributs MarshalAs pour spécifier le type de marshalling...http://www.sharevb.net/Les-API-en-VB-Net.html

ShareVB
vendredi 25 mai 2007 à 11:52:05 | Re : C# et Dll C++

rbonnal

Merci beaucoup de votre aide, il fallait en fait utiliser le stringbuilder et le marshalling comme cela :

[ DllImport("DocFileATL.dll")]
        publicunsafestaticexternint GetInfo(
int * FileNumParam,
[ MarshalAs ( UnmanagedType .LPWStr)] StringBuilder PVersParam, int* FPSignParam);


et ensuite :
 

FileNum = 0;
FPSign = 0;
StringBuilder PVers
= new StringBuilder ();
 
unsafe
{

   GetInfo(&FileNum, PVers, & FPSign); 
         }

 
Dans la déclaration j'ai changer les noms de xxx en xxxParam car c'est plus correct mais c'est pareil de tout façon.

Merci Encore !

vendredi 25 mai 2007 à 12:03:12 | Re : C# et Dll C++

rbonnal

Pardon pour le publicunsafestaticexternint,
c'est public unsafe static extern int....


Cette discussion est classée dans : int, dll, char, pvers, getinfo


Répondre à ce message

Sujets en rapport avec ce message

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 C++ en C# --- Connversion d'un char* en string [ par grojulius ] Bonjour !Je développe une appli qui utilise la DLL moo.dll (en général utilisée par les script mIRC) qui est codée en C++La plupart des fonctions de c gros problème avec DllImport : EntryPointNotFound [ par kyfranBibax ] Coucou, En fait, je dois utiliser une fonction qui se trouve dans un programme en C. Cette fonction en appelle d'autres (libtiff) et j'ai donc créer convertion int vers char ou string. [ par KillerHunter ] Bonjour,   Je suis en train de créer un petit programme en C#. Il s’agit d’un convertisseur binaire, hexadécimal et décimal. Je n’ai qu’un Pbs avec des pointeurs [ par z_san ] Bonjour à tousVoilà j'ai un ptit soucis avec des pointeurs, voilà je développe une dll en C++ sous vc++ express. Dans cette dll j'ai accés à une struc int (ASCII) to char (ou string) [ par JuS ] Bonjour amis développeurs cshapriens,Je cherche à récupérer le caractère correspondant à un code ASCII.Comment faire ???//code ASCII du "A"int code = ArrayList (C#) vers int ** [ par typhoonx ] Bonjour, je voudrai réaliser une conversion d'un ArrayList contenant un ArrayList pour chaque case du premier ArrayList en int ** dans le but d'appele pb d'importation de dll createprocess pour un pocket pc [ par defcoco ] voila mon pb je voudrais utiliser la fonction createprocess mais je dvp une appli pour pocket pc donc la fonction n'existe pasg vu kil fallait importe conversion de char* en C# [ par gwenn035 ] Bonjour à tous, je debute en C# et en Cpp (je suis plutot Java pour le moment) et j'ai fais une dll en vc++ qui contient une procedure qui a 4 paramèt Reflection DLL [ par RM50Man ] Voila le code ou j utilise la reflection pour appeler une méthode static dans ma DLL Assembly asm = Assembly.LoadFrom("PremiereDLL.dll"); Type[] types


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales