c#调用c的动态链接库(vector的读A2L文件的动态链接库)出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

kuaizilh 2012-10-27 02:58:20
本来是用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", CallingConvention = CallingConvention.Cdecl)]
public static extern int asap2_parse(string filename, bool only_a2ml, 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时就出现问题了,就指导啊~~
...全文
405 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanght08 2014-10-06
  • 打赏
  • 举报
回复
我也在学习 楼主能不能发一份样本借鉴一下 331281853@qq.com 我有其他Vector公司的学习过的东西 交换也好 可以吗
Arthur_Cage 2013-09-16
  • 打赏
  • 举报
回复
楼主好,我现在也想学习使用Vector的asap2lib,可是调用dll时总是不成功,不知楼主是否可以发个例子给我学习一下?先谢谢了!邮箱:arthur_cage@aliyun.com
kuaizilh 2012-10-27
  • 打赏
  • 举报
回复
现在发现我没设置好CharSet而导致的,谢谢各位。
wuyq11 2012-10-27
  • 打赏
  • 举报
回复
char* C#中转成 System.String 或 System.Text.StringBuilder
bdmh 2012-10-27
  • 打赏
  • 举报
回复
char *dirlist[] 这属于二级,你用 ref string 或 ref stringbuilder试试
kuaizilh 2012-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

检查参数类型是否一致
[/Quote]

你好,不是说char*可以替换为string么,我替换后还是不对。我感觉参数已经对了啊。
wuyq11 2012-10-27
  • 打赏
  • 举报
回复
检查参数类型是否一致

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧