C# 调用DLL 程序里面调用一个用Fortran的IVF编译器生成的DLL,之前给DLL传一个参数是没有问题的,现在需要给DLL传多个参数,就报错了“尝试读取或写入受保护的内存,这通常指示其他内存已损坏”,不知道这个什么原因,求解决! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参数的类型、个数、约定(stdcall/fastcall/cdeclcall等)、指针类型、结构体封送等等都可能有问题。 //传一个文件[DllImport("FY.dll")]static extern void FY(byte[]inku,int inkulen);byte[] byuse = "D\\FD.DAT";JN = "D\\FD.DAT";FY(byuse,JN.Length); //这样传一个文件运行是没问题的。//把DLL修改成需要传多个文件[DllImport("FY.dll")]static extern void FY(byte[]inku,int inkulen,byte[]inku1,int inkulen1,byte[]inku2,int inkulen2);byte[] byuse1 = "D\\FD1.DAT";JN1 = "D\\FD1.DAT";byte[] byuse2 = "D\\FD2.DAT";JN2 = "D\\FD2.DAT";byte[] byuse3 = "D\\FD3.DAT";JN3 = "D\\FD3.DAT";FY(byuse1,JN1.Length,byuse2,JN2.Length,byuse3,JN3.Length); //这样给DLL传多个文件报错了“尝试读取或写入受保护的内存,这通常指示其他内存已损坏”。不知道这么大家能否看明白,如果不明白请提,抱歉 我记得 fortran 是传 指针的。而且是 __stdcall 模式的。 C#的DateTime类型与C++的什么类型匹配呢,或者是如何转换呢? 关于分布式事务问题 自定义控件遇到问题 [IE编程]如何捕获JS的window.close C#与数据库连接问题 怎么实现对一个列数是不断变化的表的,查询,更新和添加? 如何分次写入IMAGE字段的内容。 请教,关于bs 怎么样得到dateTimePicker表示的日期时间? 如何在设计期让一个窗体能够访问另一个窗体上的控件? 百度 uediter .net版本 上传图片自定义路径更改 大神留步 WinForm项目,控件的属性值绑定到App.config中,如何做?
[DllImport("FY.dll")]
static extern void FY(byte[]inku,int inkulen);byte[] byuse = "D\\FD.DAT";
JN = "D\\FD.DAT";FY(byuse,JN.Length); //这样传一个文件运行是没问题的。
//把DLL修改成需要传多个文件
[DllImport("FY.dll")]
static extern void FY(byte[]inku,int inkulen,byte[]inku1,int inkulen1,byte[]inku2,int inkulen2);byte[] byuse1 = "D\\FD1.DAT";
JN1 = "D\\FD1.DAT";
byte[] byuse2 = "D\\FD2.DAT";
JN2 = "D\\FD2.DAT";
byte[] byuse3 = "D\\FD3.DAT";
JN3 = "D\\FD3.DAT";
FY(byuse1,JN1.Length,byuse2,JN2.Length,byuse3,JN3.Length); //这样给DLL传多个文件报错了“尝试读取或写入受保护的内存,这通常指示其他内存已损坏”。
不知道这么大家能否看明白,如果不明白请提,抱歉
而且是 __stdcall 模式的。