如何使用通过AccessViolationException从C#代码传递到C ++代码(dll)的字符串

时间:2019-06-07 14:01:54

标签: c# c++ dll

我试图将字符串从我的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错误

0 个答案:

没有答案