急求大神帮助!!C#调用C++dllSystem.AccessViolationException”类型的未经处理的异常出现在 mscorlib.dll 中。

问题描述

“System.AccessViolationException”类型的未经处理的异常出现在mscorlib.dll中。其他信息:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。代码如下//////C++dll代码HWNDhWnd;extern"C"__declspec(dllexport)voidcOSG(HWNDmhWnd){hWnd=mhWnd;}extern"C"__declspec(dllexport)voidInitOSG(){。。。。}////////C#代码[DllImport("viewdll.dll")]publicstaticexternvoidInitOSG();[DllImport("viewdll.dll",CallingConvention=CallingConvention.Cdecl)]publicstaticexternvoidcOSG(IntPtrmhWnd);//////调用privatevoidForm1_Load(objectsender,EventArgse){Class1.cOSG(this.panel1.Handle);}privatevoidbutton1_Click(objectsender,EventArgse){ThreadaThread=newThread(newThreadStart(Class1.InitOSG));aThread.Start();}运行时出现在System.AccessViolationException中第一次偶然出现的“mscorlib.dll”类型的异常“System.AccessViolationException”类型的未经处理的异常出现在mscorlib.dll中。其他信息:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。有什么问题呢??????

解决方案

解决方案二:
没有大神指教么
解决方案三:
//c++函数强制声明[DllImport("mi.dll",EntryPoint="API_OpenComm")]publicstaticexternIntPtrAPI_OpenComm(intnCom,intnBaudrate);[DllImport("mi.dll",EntryPoint="API_CloseComm")]publicstaticexternboolAPI_CloseComm(IntPtrcommHandle);[DllImport("mi.dll",EntryPoint="API_ControlBuzzer")]publicstaticexternintAPI_ControlBuzzer(IntPtrcommHandle,intDeviceAddress,bytefreq,byteduration,refbytebuffer);[DllImport("mi.dll",EntryPoint="API_MF_Read")]publicstaticexternintAPI_MF_Read(IntPtrcommHandle,intDeviceAddress,bytemode,byteblk_add,bytenum_blk,refbytesnr,refbytebuffer);privatevoidForm1_Load(objectsender,EventArgse){Program.Port=API_OpenComm(4,9600);if(Program.Port.ToInt32()==0){labelControl2.Visible=false;labelControl3.Visible=true;buttonX1.Visible=true;return;}bytepBuf=newbyte();Program.G_start=API_ControlBuzzer(Program.Port,0,3,1,refpBuf);if(Program.G_start==0){labelControl2.Visible=true;labelControl3.Visible=false;buttonX1.Visible=false;}//启动时间轴timer1.Interval=1000;timer1.Start();}

解决方案四:
引用2楼zyl_leilei的回复:

//c++函数强制声明[DllImport("mi.dll",EntryPoint="API_OpenComm")]publicstaticexternIntPtrAPI_OpenComm(intnCom,intnBaudrate);[DllImport("mi.dll",EntryPoint="API_CloseComm")]publicstaticexternboolAPI_CloseComm(IntPtrcommHandle);[DllImport("mi.dll",EntryPoint="API_ControlBuzzer")]publicstaticexternintAPI_ControlBuzzer(IntPtrcommHandle,intDeviceAddress,bytefreq,byteduration,refbytebuffer);[DllImport("mi.dll",EntryPoint="API_MF_Read")]publicstaticexternintAPI_MF_Read(IntPtrcommHandle,intDeviceAddress,bytemode,byteblk_add,bytenum_blk,refbytesnr,refbytebuffer);privatevoidForm1_Load(objectsender,EventArgse){Program.Port=API_OpenComm(4,9600);if(Program.Port.ToInt32()==0){labelControl2.Visible=false;labelControl3.Visible=true;buttonX1.Visible=true;return;}bytepBuf=newbyte();Program.G_start=API_ControlBuzzer(Program.Port,0,3,1,refpBuf);if(Program.G_start==0){labelControl2.Visible=true;labelControl3.Visible=false;buttonX1.Visible=false;}//启动时间轴timer1.Interval=1000;timer1.Start();}

我的错在哪了呢该如何修改
解决方案五:
引用3楼u011347730的回复:

Quote: 引用2楼zyl_leilei的回复:
//c++函数强制声明[DllImport("mi.dll",EntryPoint="API_OpenComm")]publicstaticexternIntPtrAPI_OpenComm(intnCom,intnBaudrate);[DllImport("mi.dll",EntryPoint="API_CloseComm")]publicstaticexternboolAPI_CloseComm(IntPtrcommHandle);[DllImport("mi.dll",EntryPoint="API_ControlBuzzer")]publicstaticexternintAPI_ControlBuzzer(IntPtrcommHandle,intDeviceAddress,bytefreq,byteduration,refbytebuffer);[DllImport("mi.dll",EntryPoint="API_MF_Read")]publicstaticexternintAPI_MF_Read(IntPtrcommHandle,intDeviceAddress,bytemode,byteblk_add,bytenum_blk,refbytesnr,refbytebuffer);privatevoidForm1_Load(objectsender,EventArgse){Program.Port=API_OpenComm(4,9600);if(Program.Port.ToInt32()==0){labelControl2.Visible=false;labelControl3.Visible=true;buttonX1.Visible=true;return;}bytepBuf=newbyte();Program.G_start=API_ControlBuzzer(Program.Port,0,3,1,refpBuf);if(Program.G_start==0){labelControl2.Visible=true;labelControl3.Visible=false;buttonX1.Visible=false;}//启动时间轴timer1.Interval=1000;timer1.Start();}

我的错在哪了呢该如何修改

为什么要Class1.InitOSG?你上面声明的c++函数跟下面的Load和button1_Click不是在一个类里面吗?不行你调试一下看看是哪句代码出了问题。。。

时间: 2024-10-03 22:52:34

急求大神帮助!!C#调用C++dllSystem.AccessViolationException”类型的未经处理的异常出现在 mscorlib.dll 中。的相关文章

opengl-计算机图形学OpenGL的问题,急求大神指点

问题描述 计算机图形学OpenGL的问题,急求大神指点 用多边形逼近算法花了一个多边形,然后需要修改一个点的坐标,让其不规则,请问如何修改一个点的坐标?逼近算法如下: void COpenGLView::BiJin(int radius,Ploygon *ploygon) { int i,n; float x,y,xnew,ynew,alfa,co,si; alfa=2*acos(((float)radius-DELTA)/(float)radius); n=(int)(2*3.14159/al

gdal-GDAL读取tif数值出现问题?急求大神指点!!!!!

问题描述 GDAL读取tif数值出现问题?急求大神指点!!!!! 5C 文件是用arcgis软件分类后存储的tif文件,分了20个类,灰度值应该是1-20之间的整数值,在arcgis软件中显示是这样的正常值,但是用VS2010+GDAL中读取时会出现灰度值不是这个,总是32768或0啊什么的值.我程序读取网上下载的原始geotiff的高程数据是完全没问题的,分类后的数据怎么就读不出来了呢?我写了个大致代码如下,望大神给我分析一下,第一天注册CSDN,谢谢! #include ""std

课程设计题目-急求大神们解答,我编都有好多错误

问题描述 急求大神们解答,我编都有好多错误 二叉树用二叉链式存储,链接时用叶子结点的rchild,域存放指针,请设计一个算法完成1.对一颗二叉树加线索,2.把二叉树的叶子结点按从左到右的顺序连成一个单链表,3,统计二叉树中0到2度结点. 解决方案 我不明白为什么这会是一道题 要将叶子节点连接的话那是b+树的方法,然而又需要线索化, 线索化以及连成单链表很简单,递归,线索化加一个前一个节点的指针,链表的话加一个前一个叶子的指针,统计的话随便哪种遍历都行

急求大神指点下我在delphi写的这个数据库双表查询插入的问题

问题描述 急求大神指点下我在delphi写的这个数据库双表查询插入的问题 我要实现的是A任务表,B任务执行状态两表关联查询后,得到A表中能执行的数据,查询出来的结果确实是A表中能执行任务的数据, 但是在向B表中插入这条A表数据执行状态的时候,插入B表中的数据ID不是之前查询A表出来数据的ID, 下面附上代码,求大大们指点 //定义了任务运行表插入数据操作过程 procedure TForm1.InsertData(exeid,status,starttime,endtime,result : s

c语言取小数问题,急求大神解答!

问题描述 c语言取小数问题,急求大神解答! 程序是#include int main() { float a,b; int n; scanf("%f",&a); n=(1000*a+0.5); b=(n*1.0)/1000; printf("%f",b); return 0; } 输入123.4567 输出是123.457001 输入1234.567 输出时1234.567017 输入12345.67 输出是12345.669922 为什么会这样呢?求大神解

servlet-java关于Servlet里面跳转jsp页面出现找不到页面的问题,急求,大神,小弟跪求了!!

问题描述 java关于Servlet里面跳转jsp页面出现找不到页面的问题,急求,大神,小弟跪求了!! 问题:通过form表单跳转到servlet中处理事物完后,需要再跳转到另外一个jsp页面.我是用了很多种方法:都是页面找不到错误.使用过的方法: 1.response.sendRedirect("excelInport.jsp"); 2.request.getRequestDispatcher("excelInport.jsp").forward(request,

求大神指教-做音乐播放器,用service做基本操作。急求大神解答。急!

问题描述 做音乐播放器,用service做基本操作.急求大神解答.急! package zuxia.android.service; import java.io.IOException; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.Environment; import android.os.IBinder; impo

鲜果联播-android 加入购物车界面实现 急求大神解惑

问题描述 android 加入购物车界面实现 急求大神解惑 最近做购物车,在加入购物车这个界面这里遇到了问题,跪求大神指教,上图是我现在实现的效果,每个属性我都能实现单选效果,也能获得每个属性的id,但是需求要求我做来像淘宝那样,所有的组合都对应一个唯一的价格,并显示在上面,每个组合都有一个库存,如果库存为0的话,按钮会变成灰色,下面是淘宝的效果,比如我点了白色,下面的套餐类型都是有库存的,那么套餐类型下面所有按钮都是亮的(表示可以选中),如果我点了桃粉色,套餐类型下面的套餐四和套餐五就没有库存

页面jquery提示报错 急求大神解决

问题描述 页面jquery提示报错 急求大神解决 TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement. 解决方案 检查下jquery提交的代码,看看是否有未定义的变量. 相同问题参考:http://www.07net01.com/2015/08/902494.html 解决方案二: 页面中使用已经引入的jquery插件,结果却提示JS报错找不到函数[问题解决] 解决方