本来是用c++调用动态链接库的,调用代码为
OpenDialog1->DefaultExt="a2l";
OpenDialog1->Filter="a2l(*.a2l)|*.a2l";
path=OpenDialog1->FileName;
content->LoadFromFile(path);
m_asap2_parse(path.c_str() ,FALSE,dirlist);
此时能够成功,m_asap2_parse定义为int asap2_parse(char *filename, BOOL only_a2ml, char *dirlist[]);
但是我现在用C#做时出现问题“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”我c#代码如下
[DllImport("asap2prs.dll", EntryPoint = "asap2_parse", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern int asap2_parse(string filename, bool only_a2ml,ref string[] dirlist);
openFileDialog1.Title = "打开a2l文件";
openFileDialog1.Filter = "A2L flie(*.a2l)|*.a2l";
openFileDialog1.ShowDialog();
string[] dir = { ".", "\\MySpecialDirForAmls",null };
string path;
path = openFileDialog1.FileName;
asap2_parse( path,false, dir);
当运行到asap2_parse时就出现问题了,就指导啊~~昨天还以为问题解决了。。。
------解决思路----------------------
参数传递错误,用byte[]试试