Предположим, что эта функция C:
void do_something(const char* str)
Она где-то сохраняет строку для последующей ссылки.
] Кроме того, у меня есть следующая подпись на C# для вызова этой функции:
[DllImport("NativeLib")]
static extern void do_something(string str);
Теперь, что мне нужно сделать при передаче строки этому методу:
GCHandle. Alloc()
) (или маршаллер создает копию)?GCHandle.Alloc( )
)? Или мне нужно передать возвращаемое значение GCHandle.AddrOfPinnedObject()
?string
правильным типом данных (для do_something
) в этом случае? Или вместо этого следует использовать IntPtr
?