这是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);
}
}
这就是未托管的方法。
BOOL WINAPI CAM_EnumCameraEx(BOOL bSynchronized, char **ppCameraList, long lMaxCamera, long lMaxCharacter);
这个方法是往一个字符串数组中写入内容的。那么有没有办法从C#调用这个方法,让非托管代码能够往这个字符串数组中写入内容呢?