我试图将字符串从我的C#程序传递到我创建的C ++ DLL。 每当我尝试使用字符串时,程序都会引发System.AccessViolationException:'尝试读取或写入受保护的内存。这通常表明其他内存已损坏'
我已经能够将其他变量类型(例如int和double)从C#代码传递到C ++代码并使用它们,但是传递字符串会不断抛出AccessViolationException。
System.Runtime.InteropServices;
Class Program{
[DllImport("myDll", SetLastError = true)]
static extern bool test(string data);
static void Main(string[] args)
{
test("Hello world");
}
extern "C" __declspec(dllexport) void test(string *data)
{
// I get an error whenever I asing *data to s;
string s = *data;
}
我希望将数据中的值分配给s(在我的c ++代码中),而不会在运行时抛出System.AccessViolationException错误