用.net调用非托管dll出现错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。c#和vb.net都试过代码如下:声明:
[DllImport("refprop.dll", CharSet = CharSet.Auto)]
public static extern unsafe void SETUPdll(int i, string hfld, string hfmix, string hrf, double ierr, string herr, int ln1, int ln2, int ln3, int ln4);调用: int i, nc = 1;
hfld="nitrogen.fld";
hfmix="hmx.bnc";
hrf="DEF";
int ierr=0; SETUPdll(nc, hfld, hfmix, hrf, ierr, herr, 10000, 255, 3, 255);运行到这就报错上面的内存错误。但是我在vb6.0调用的时候 完全没问题。vb6.0的代码:声明:
Public Declare Sub SETUPdll Lib "REFPROP.DLL" (i As Long, ByVal hfld As String, ByVal hfmix As String, ByVal hrf As String, ierr As Long, ByVal herr As String, ln1 As Long, ln2 As Long, ln3 As Long, ln4 As Long)调用:Sub Example()
Dim i As Integer
nc = 1
hfld = "nitrogen.fld"
hfmix = "hmx.bnc"
hrf = "DEF"
Call SETUPdll(nc, hfld, hfmix, hrf, ierr, herr, 10000&, 255&, 3&, 255&)end sub
请高人解答,多谢了。
[DllImport("refprop.dll", CharSet = CharSet.Auto)]
public static extern unsafe void SETUPdll(int i, string hfld, string hfmix, string hrf, double ierr, string herr, int ln1, int ln2, int ln3, int ln4);调用: int i, nc = 1;
hfld="nitrogen.fld";
hfmix="hmx.bnc";
hrf="DEF";
int ierr=0; SETUPdll(nc, hfld, hfmix, hrf, ierr, herr, 10000, 255, 3, 255);运行到这就报错上面的内存错误。但是我在vb6.0调用的时候 完全没问题。vb6.0的代码:声明:
Public Declare Sub SETUPdll Lib "REFPROP.DLL" (i As Long, ByVal hfld As String, ByVal hfmix As String, ByVal hrf As String, ierr As Long, ByVal herr As String, ln1 As Long, ln2 As Long, ln3 As Long, ln4 As Long)调用:Sub Example()
Dim i As Integer
nc = 1
hfld = "nitrogen.fld"
hfmix = "hmx.bnc"
hrf = "DEF"
Call SETUPdll(nc, hfld, hfmix, hrf, ierr, herr, 10000&, 255&, 3&, 255&)end sub
请高人解答,多谢了。
解决方案 »
- asp.net 的所有控件都必须放置在<form runat=server><form>内吗?
- 如何判断页面是否在最上层。
- 2、为什么vs08做的网站copy到IIS的虚拟目录后执行时提示:'NT AUTHORITY\NETWORK SERVICE' 登录失败?
- 100分求助:模式对话框的问题?
- hashtabel和一般的table 有什么不同?
- 日期格式转换问题?
- ########高分求解!######读取xml文件形成树状结构!
- 如何弹出一个模态的叶面???
- 在北京Asp.net程序员的薪水大约是多少?
- .net Web项目连接Oracle,出错:ORA-06413: 连接未打开
- GridView中绑定Textbox后数据无法正常读取,急!!!
- 模拟Asp.net Ajax之UpdatePanel控件实现局部更新原理
试着修改一下签名看看,把VB里为doube的对应C#下改为double看看。