Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : dll en C [ Système / Autre ] (ZaRMaS)

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é 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

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.