我已經通過一些在線示例將我的C++ DLL函數導入到C#中。函數必須聲明爲C#類的一部分。但是,如果我想在其他C#類中使用這些函數,我該如何共享這些聲明?如何在文件之間共享C#DllImport函數?
最好的解決方案是將C++ DLL函數導入到一般類中,並在整個應用程序中使用它。
在此先感謝。
編輯:我試了下面的建議,但現在我得到錯誤「ImportSomeStuff由於其保護級別而無法訪問」,我嘗試使用該結構。一切似乎都是公開的,那我還有什麼可以嘗試的?
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);
}
(不同的文件)
class DoSomeStuff
{
public List<ImportSomeStuff.MyStruct> listStuff = new List<ImportSomeStuff.MyStruct>();
}
謝謝。我的函數也使用我在C#中聲明的結構,但是現在我得到錯誤「[class]由於其保護級別而無法訪問」,我在哪裏使用它。有什麼建議麼? – parsley72 2010-12-12 10:18:57
@parsley然後使結構公開 – CodesInChaos 2010-12-12 10:25:39
他們是 - 見上面的代碼示例。 – parsley72 2010-12-12 10:33:08