C++ 应用程序在执行以下代码时崩溃

C++ 应用程序在执行以下代码时崩溃,c++,vb.net,C++,Vb.net,我从下面的Dll调用了函数 testVC2.dll char * getcheck(); char * getcheck(){ strcpy(Detail::AMessage, a.auth_answ.Check); return Detail::AMessage; } 我的def文件。 LIBRARY EXPORTS getcheck @1 我的VB代码是 Public Declare Function getcheck Lib "testVC2.dll" () As

我从下面的Dll调用了函数

testVC2.dll

char * getcheck();

char * getcheck(){
    strcpy(Detail::AMessage, a.auth_answ.Check);
    return Detail::AMessage;
}
我的def文件。

LIBRARY
EXPORTS
  getcheck @1
我的VB代码是

Public Declare Function getcheck Lib "testVC2.dll" () As String

 Console.WriteLine(getcheck() )

它给出错误,应用程序崩溃,但当我试图从函数返回整数时,它会工作。

尝试返回BSTR:

#include <comutil.h>

BSTR getcheck();

BSTR getcheck(){

    _bstr_t bstr1(a.auth_answ.Check);
    BSTR bstr;
    bstr = bstr1.copy();
    return bstr;
}   
#包括
BSTR getcheck();
bstrgetcheck(){
_bstr\u t bstr1(a.auth\u.answ.Check);
BSTR BSTR;
bstr=bstr1.copy();
返回bstr;
}   

> p>从C++到托管语言返回字符串的正常方式是将StringBuilder作为输出参数传递。 大概是这样的:

//C++
// place your output message into str
void foo(char* str);

//C#
void foo(StringBuilder str);

感谢您的帮助,但在我的第一个演示应用程序中,我的代码正在运行。。我想知道是否有任何特权,所以它不能让我读或写?你能解释一下你所说的“第一个演示应用”是什么意思吗?你是说当你返回一个整数时?上面的代码对你有用吗?是的,实际上我是.NET新手,所以,在我开始我的原始项目之前,我创建了一个演示应用程序,当时我的代码是有效的,但现在我无法确定,“为什么它现在不起作用”。实际上我创建了三个项目。我的第一个项目包含由win32编译的DLL函数,我的第二个项目使用此DLL,它由“任何Cpu”平台混合。最后,我将我的第二个项目DLL使用到第三个项目中,该项目也在win32平台中编译,因此我尝试使用win32编译我的第二个项目,但我找不到该选项。它只显示任何CPU选项。要查找Win32选项,您应该将其作为一个新问题询问,因为如果它仅在注释中,其他用户将不会选择它。请确保您使用正确的平台目标属性编译.NET项目。我的意思是,如果你用x86编译C++,它也必须在.NET x86中。AnyCPU根据进程(x86或x64)的不同而改变其行为。我发现了它,并感谢您的帮助:-)它工作正常