Ich habe meine C++ DLL-Funktionen in C# importiert, indem Sie einige Online-Beispiele folgen. Die Funktionen müssen als Teil einer C# -Klasse deklariert werden. Aber wenn ich diese Funktionen in anderen C# -Klassen verwenden möchte, wie kann ich die Deklarationen teilen?Wie kann ich C# DllImport Funktionen zwischen Dateien teilen?
Die beste Lösung wäre, die C++ - DLL-Funktionen in eine allgemeine Klasse zu importieren und diese in meiner gesamten Anwendung zu verwenden.
Vielen Dank im Voraus.
Edit: Ich habe den Vorschlag unten versucht, aber jetzt bekomme ich den Fehler "ImportSomeStuff ist aufgrund seiner Schutzstufe nicht zugänglich", wo ich versuche, die Struktur zu verwenden. Alles scheint öffentlich zu sein. Was kann ich sonst noch versuchen?
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);
}
(andere Datei)
class DoSomeStuff
{
public List<ImportSomeStuff.MyStruct> listStuff = new List<ImportSomeStuff.MyStruct>();
}
Danke. Meine Funktionen verwenden auch eine Struktur, die ich in C# deklariert habe, aber ich bekomme jetzt den Fehler "[Klasse] ist aufgrund ihrer Schutzstufe nicht zugänglich", wo ich sie verwende. Irgendwelche Vorschläge? – parsley72
@parsley dann die Strukturen öffentlich machen – CodesInChaos
Sie sind - siehe Codebeispiel oben. – parsley72