J'ai importé mes fonctions C++ DLL en C# en suivant quelques exemples en ligne. Les fonctions doivent être déclarées dans le cadre d'une classe C#. Mais si je veux utiliser ces fonctions dans d'autres classes C#, comment puis-je partager les déclarations?Comment puis-je partager les fonctions C# DllImport entre les fichiers?
La meilleure solution serait d'importer les fonctions C++ DLL dans une classe générale et utiliser tout au long de ma demande.
Merci d'avance.
Edit: J'ai essayé la suggestion ci-dessous, mais maintenant, je reçois l'erreur « ImportSomeStuff est inaccessible en raison de son niveau de protection » où je tente d'utiliser la struct. Tout semble être public, alors que puis-je essayer?
class ImportSomeStuff
{
[StructLayout(LayoutKind.Sequential)]
public struct MyStruct
{
public uint nData;
}
public delegate void MyCallback(ref MyStruct myStruct);
[DllImport("My.dll", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool AddCallback(MyCallback callback);
[DllImport("My.dll", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool RemoveCallback(MyCallback callback);
}
(fichier différent)
class DoSomeStuff
{
public List<ImportSomeStuff.MyStruct> listStuff = new List<ImportSomeStuff.MyStruct>();
}
Merci. Mes fonctions utilisent également une structure que j'ai déclarée en C#, mais je reçois maintenant l'erreur "[class] est inaccessible en raison de son niveau de protection" où je l'utilise. Aucune suggestion? – parsley72
@parsley puis rendre les structures publiques – CodesInChaos
Elles sont - voir l'exemple de code ci-dessus. – parsley72