当前位置:编程学习 > C#/ASP.NET >>

C# 调用DLL

程序里面调用一个用Fortran的IVF编译器生成的DLL,
之前给DLL传一个参数是没有问题的,现在需要给DLL传多个参数,就报错了“尝试读取或写入受保护的内存,这通常指示其他内存已损坏”,
不知道这个什么原因,求解决! --------------------编程问答-------------------- 你这么问神才知道,第一,参数不匹配,第二,调用方式不匹配,第三,代码问题 --------------------编程问答-------------------- 参数的类型、个数、约定(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 模式的。 --------------------编程问答-------------------- 参数类型不匹配,这个问题我以前也遇到过 --------------------编程问答-------------------- 参数错误··· --------------------编程问答-------------------- --------------------编程问答-------------------- 哦,我先改变参数类型试试 --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,