Đây là mã C#.Vượt qua char ** theo tham chiếu từ C# đến không được quản lý C++
namespace CameraTest
{
class Program
{
static void Main(string[] args)
{
string[] lst = new string[10];
for (int i = 0; i < 10; i++)
{
lst[i] = new string(' ', 33);
}
bool sync = true;
bool ret = CameraCalls.CAM_EnumCameraEx(sync, lst, 10, 33);
}
}
public static class CameraCalls
{
[DllImport("CamDriver64.dll")]
public static extern bool CAM_EnumCameraEx(bool sync,
[MarshalAs(UnmanagedType.LPArray)]
string[] lst,
long maxCam,
long maxChar);
}
}
Phương pháp không được quản lý này.
BOOL WINAPI CAM_EnumCameraEx(BOOL bSynchronized, char **ppCameraList, long lMaxCamera, long lMaxCharacter);
Phương pháp ghi vào chuỗi được truyền. Có cách nào để gọi phương thức này từ C# và có mã không được quản lý có thể ghi vào mảng chuỗi không?
[marshaling loại khác nhau của Mảng] (https://msdn.microsoft.com/en-us/library/hk9wyw21 (v = vs.110) .aspx) –
Tài liệu đó có câu trả lời tất cả những gì đã có để làm là sử dụng In, Out –