4
Answers

How to pass referenced string from c dll to c#

Ridzuan

Ridzuan

14y
3.5k
1
I have problem to pass a referenced string to c#. Below are the code for c dll and c#

c dll code

extern "C" __declspec(dllexport) int test(string &msg)
{
    msg = "test";
    return 0;
}

c# code

[DllImport("c_dll.dll")]
public static extern int test(ref StringBuilder newMsg);

StringBuilder aaa = new StringBuilder();
aaa.append("");

int a = test(ref aaa);

i can compiled it successfully but whenever I tried to run it, I get this error
Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Please help to indicate which part of the code is wrong. Thank you
Answers (4)