我在我的C++函數中有以下結構。如何將結構傳遞給C++函數並返回相同的修改?
struct Cam
{
char ip[16];
char login[16];
char pass[16];
char name[16];
};
以下是我從CPP暴露講座
extern "C" __declspec(dllexport) Cam* AddCameraStruct1(Cam cam)
{
//modify the cam object
}
的方法這裏是我如何定義在C#中的結構和功能。
[StructLayout(LayoutKind.Sequential)]
internal unsafe struct Cam
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string ip;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string login;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string pass;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string name;
}
[DllImport(@"mydll.dll", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.LPStruct)]
internal static extern IntPtr AddCameraStruct1(DPAPI.Cam*);
我沒有得到如何在c#中使用此功能。請建議是否有問題。
unsafe
{
DPAPI.Cam cam = new DPAPI.Cam();
cam.ip = "192.168.0.232";
cam.login = "admin";
cam.pass = "admin";
cam.name = "kekekeke";
DPAPI.Cam* cam1 = (DPAPI.Cam*)DPAPI.AddCameraStruct1(cam);
}
我收到以下錯誤 -
指針和固定大小緩衝區只能在不安全的上下文中使用
無法獲取的地址,獲取的大小,或聲明指針一個被管理的類型
你的問題不清楚。這是什麼意思:「我沒有得到如何在C#中使用這個」?你會得到什麼錯誤? – nakiya
請看我更新的問題。 –