Intéropérabilité C

facdaar Messages postés 64 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 23 février 2009 - 10 nov. 2004 à 22:08
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 15 nov. 2004 à 19:37
Salut,

Je désire utiliser une dll native (en l'occurence cellcore.dll, mais peu importe) et j'ai un problème avec une structure en C que je veux déclarer en C# : j'ai beau respecter ce qui est écrit dans MSDN, ou d'autres sources, j'ai toujours l'erreur

The type or namespace name 'MarshalAs' could not be found (are you missing a using directive or an assembly reference?)

Voici la structure en C :

typedef struct simphonebookentry_tag {
DWORD cbSize;
DWORD dwParams;
TCHAR lpszAddress[MAX_LENGTH_ADDRESS];
DWORD dwAddressType;
DWORD dwNumPlan;
TCHAR lpszText[MAX_LENGTH_PHONEBOOKENTRYTEXT];
} SIMPHONEBOOKENTRY, *LPSIMPHONEBOOKENTRY;

et voici ma transcription en C# :

using System.Runtime.InteropServices;
...
[StructLayout(LayoutKind.Sequential)]
public struct SimPhonebookEntry {
public uint cbSize;
public uint dwParam;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=256)]
public char[] lpszAddress;
public uint dwAddressType;
public uint dwNumPlan;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=256)]
public char[] lpszText;
}

Est-ce que quelqu'un peut me dire pourquoi j'ai cette erreur alors que dans la littérature, il est écrit que la classe MarshalAsAttribute fait partie de System.Runtime.InteropServices

6 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 nov. 2004 à 22:43
bizarre en effet
et si tu met

[StructLayout(LayoutKind.Sequential)]
public struct SimPhonebookEntry 
{
public uint cbSize;
public uint dwParam;
[System.Runtime.InteropServices.MarshalAs(UnmanagedType.ByValArray, SizeConst=256)]
public char[] lpszAddress;
public uint dwAddressType;
public uint dwNumPlan;
[System.Runtime.InteropServices.MarshalAs(UnmanagedType.ByValArray, SizeConst=256)]
public char[] lpszText;
}


ça donne quoi ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
facdaar Messages postés 64 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 23 février 2009
10 nov. 2004 à 23:44
Malheureusement, même message, avec juste MarshalAs de sousligné en bleu !

En entête de fichier, j'ai ceci :

using System;
using System.Runtime.InteropServices;

namespace SIM {
...
}

Là, j'avoue que je suis sec...

David
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
11 nov. 2004 à 01:01
Quel Framework ?

::|The S@ib|::
MVP C#.NET
0
facdaar Messages postés 64 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 23 février 2009
11 nov. 2004 à 09:52
Je travaille avec le framework .NET 1.1 version anglaise, et j'utilise Visual Studio .net 2003

?!?
David.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
facdaar Messages postés 64 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 23 février 2009
11 nov. 2004 à 10:57
J'ai posté mon code :

Accès à la carte SIM

Il est très court, et je me dis que l'erreur qui s'est glissée dedans doit être vraiment bête, mais comme cela arrive parfois, je bute dessus...

Juste un passionné,
David. :)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 nov. 2004 à 19:37
euh, Compact Framework != Framework
MarshalAs n'existe tout simplement pas dans le CF

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous