begin process at 2010 02 09 21:47:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

dll en C


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

dll en C

lundi 12 juin 2006 à 12:45:56 | dll en C

ZaRMaS

Salut,

J ai besoin d une petite aide. En csharp, je recupere un tableau de byte declarer ainsi :
byte []saveArray

Ce tableau doit etre passe en parametre a une dll developpe en C qui prend en parametre un char *

Dll en C :
void HelloWorld(char *test)
{
    printf("Text %s\n", test);
}

Program en C#
        [DllImport("myDlltest.dll")]
        public static extern unsafe void HelloWorld (char *test);

        /*[DllImport("CodecDCT.dll", CharSet = CharSet.Auto)]
        public static extern void YUVImage();
        */
        public static byte[] savedArray;

        static void Main(string[] args)
        {
            savedArray = new byte[64000];
            for (int _i = 0; _i < 64000; ++_i)
            {
                savedArray[_i] = Convert.ToByte('1');
            }
            HelloWorld(savedArray);
        }

Bon bien sur ca ne compile pas en c# pusiqu il attend un char *, et vu que les pointeurs en c# n existe je me retrouve un peu bloquee.

Merci pour vos idees d avance
lundi 12 juin 2006 à 13:07:12 | Re : dll en C

dgouttegattat

Membre Club
Réponse acceptée !
Salut,
Dans la déclaration de ta méthode externe, il faut indiquer au framework comment il doit passer le paramètre, grâce à un attribut System.Runtime.InteropServices.MarshalAs :

[DllImport("myDlltest.dll")]
public static extern void HelloWorld(
   [MarshalAs(UnmanagedType.LPArray)] byte[] test);


Ici, la valeur LPArray indique que le paramètre test doit être passé comme un pointeur vers le premier élément du tableau, donc sauf erreur, ça devrait correspondre au prototype de ta fonction C ("char *").

Fais-moi savoir si ça ne marche pas.
lundi 12 juin 2006 à 13:56:55 | Re : dll en C

ZaRMaS

ca marche exactement comme je le veux
merci



Cette discussion est classée dans : dll, static, void, byte, char


Répondre à ce message

Sujets en rapport avec ce message

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 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 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 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 C# et Dll C++ [ par rbonnal ] Bonjour a tous !  Je répète que suis aussi fort en Attendre un évènement [ par Julien237 ] Bonjour,J'ai actuellement un programme qui débute comme ceci :        [STAThread]        static void Main(string[] args)        {            Applicati Intégration d'une DLL dans un programme c# [ par gregcedepe ] Bonjour,J'apelle une dll à l'intérieur d'un programme c#.Les fonctions les plus simples retournant un booléen fonctionnent bien et je récupère bien le Cast void* byte[], code non managé [ par renyone ] Salut !J'ai un programme C# qui appelle une dll c++ exportant une méthode du type : private unsafe static extern long ExportedExecute(void* inputChain Appel de fonction par l'intermédiaire d'une DLL C (problème d'arguments) [ par ScRunCHy ] Bonjour à tous,J'essaie de développer dans le cadre de mon stage une IHM dans laquelle je dois entre autre afficher des images JPEG2000.Il faut que j' Probleme DLLIMPORT [ par garcimor59 ] Bonjour,Voilà j'utilise une DLL faite en C (pas sur) dans du code C#, j'ai donc suivit la méthode indiquée dans les differents  posts du forum.Cela  f


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,218 sec (3)

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