実際、私は次のようにC#でC ++ dllを使用しています
私のC++コード
extern "C" __declspec(dllexport)
char** __stdcall hh()
{
static char* myArray[3] = {"A1", "BB2", "CC3",};
return myArray;
}
私のC#コード
[DllImport(@"ourdll.dll",CharSet = CharSet.Ansi,CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr hh();
static void Main(string[] args)
{
IntPtr a = hh();
int j = 0;
string[] s=new string[100]; //I want this to be dynamic
do
{
s[j] = Marshal.PtrToStringAnsi(Marshal.ReadIntPtr(a,4*j));
j++;
}
while(s[j-1] != null);
}
hh() によって返された配列のサイズを取得できません。コード行が正しく表示されるように、配列のサイズを取得するにはどうすればよいですか?
文字列[] s=新しい文字列[100]; string[] への変更 s=new string[実際の配列の長さ];