我无法弄清楚如何将char *传递给C#中的C++函数。调用一个C#函数,它需要从C#中的字符指针#
extern "C" __declspec(dllexport)
unsigned int extractSegment(char * startPoint, unsigned int sizeToExtract)
{
//do stuff
shared_ptr<std::vector<char>> content(new std::vector<char>(startPoint,startPoint+sizeToExtract));
//do more stuff
return content->size();
}
该函数用于从文件中读取段并对其执行一些二进制操作(为什么使用字符向量)。 startPoint是我想要读取的段的开始。我无法改变这个功能。
在C#中,我尝试将文件读入一个byte []数组,并定义了使用StringBuilder的DllImport,其中导出具有char *。我试图这样称呼它:
byte[] arr = File.ReadAllBytes(filename);
StringBuilder sb = new StringBuilder(System.Text.Encoding.Unicode.GetString(arr, startPoint,arr.Length - startPoiunt));
extractSegment(sb,200);
这导致了SEHException。
你可能忘记了CallingConvention.Cdecl – 2014-11-05 11:07:56