我为已经成功构建的代码创建了一个库。但是,当我从C#调用相同的代码时,它会给出错误并在“ std”上中断
这是我正在使用的C#代码。
private const string DllFilePath = @"C:\Projects\\TestParser.dll";
[DllImport(DllFilePath, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
private extern static int test();
public static int Test(int number)
{
return test();
}
下面是C ++库代码。
extern "C" //No name mangling
__declspec(dllexport) //Tells the compiler to export the function
int //Function return type
__stdcall
test()
{
char arg1[] = "C:\\Tools\\.csv";
char arg2[] = "C:\\Share\\test.csv";
char *argv[] = { NULL, &arg1[0], &arg2[0] };
int argc = (int)(sizeof(argv) / sizeof(argv[0]));
if (argc == 2 && strcmp(argv[1], "-version") == 0)
{
return 1;
}
else if (argc % 2 != 1 || argc < 3)
{
return 2;
}
char base_file_name[] = "C:\\Test.csv";
// For each file that was specified.
for (S32 i = 1; i < argc; i += 2)
{
**std::string base_file_name(argv[i + 1]);**
}
return 10;
}
需要早期帮助。 以下是我得到的错误。
在未知模块中发生了类型为'System.AccessViolationException'的未处理异常。尝试读取或写入受保护的内存。
以下是应用以下提到的异常处理机制后收到的异常。