C#调用C++的Dll返回空值,求助
C++写的Dll中
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
EXPORT
void __cdecl FuncA(char* message,long* value)
{
memset(receive_buffer.message,0,1025);
strcpy(receive_buffer.message,"message return from dll")
long tmp=10;
value=&tmp;
return;
}
C# 调用Dll
[DllImport("test.dll",EntryPoint="FuncA")]
private static extern void FuncA(ref string strMsg,ref long value1);
string strMsg=string.Empty;
long lValue=0;
FuncA(ref strMsg,ref lValue);
执行后,结果strMsg还是为空,lValue为0。
我认为,在FuncA内,虽然申请了内存,但是,当函数执行完了之后,清除了内存,那么返回的值将会是一个非法的指针,特别是long* value.
请教,FuncA应该如何写才能传回值给C#?