报错:0x00007FFA603F4FD9 处(位于 path.exe 中)引发的异常: Microsoft C++ 异常: std::bad_alloc,位于内存位置 0x00000068EBDFC930 处。
引发的异常:“System.Runtime.InteropServices.SEHException”(位于 path.exe 中)
“System.Runtime.InteropServices.SEHException”类型的未经处理的异常在 path.exe 中发生外部组件发生异常。
c++ dll
pass.h
extern "C" __declspec(dllexport)
void passToCPlus(char* path1,int len)
{
char* a = new char;
for (int i = 0; i < len; i++) { a[i] = path1[i]; }
string path(a);
cout<
c# 调用dll
[DllImport("path.dll",CharSet=CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern void passToCPlus ( char[] path,int len);
private void 测试字符ToolStripMenuItem_Click(object sender, EventArgs e)
{
string a = "c:\path\001";
char[] b = a.ToCharArray();
int len = a.Length;
passToCPlus (b,len);
}
查询了很多解决方案,无一能够解决。
把char[] path改成string path
char改成char[]
char* a = new char;
-----〉
char* a = new char[len+1]
感谢各位热心回答。问题找到点了,是dll更新的问题。加一个字节长度确实有用。第一个改为string不知为何还是不行。代码中确实存在初始化数组错误。感谢各位。