您能帮忙解决下面提到的问题:
以下是代码段:
托管代码(VC ++) - 包装代码:
方法-1:
void displayString(std::string abc)
{
std::string xyz=abc;
std::cout<<xyz;
}
方法-2:
void sendData(System::String^ input)
{
char* inputData = (char*)Marshal::StringToHGlobalAnsi(input).ToPointer();
std::string argData = inputData;
displayString(argData); //Working fine
//passing string instance to unmanaged code
/* while execution the below line the system throws: _CrtIsValidHeapPointer(pUserData), _BLOCK_TYPE_IS_VALID(pHead->nBlockUse), HEAP CORRUPTION DETECTED, and finally AccessViolationException */
sendDisplayString(argData); //AccessViolationException
sendDisplayString("Hello"); //AccessViolationException
}
非托管代码C ++ dll:
void sendDisplayString(std::string input)
{
std::cout<<input;
}
注意:已在所有提供的链接中搜索,但此问题没有解决方案。所有链接都路由到MSDN编组页面。
提前致谢。