求帮助 C#编写activex时,调用外部dll,提示 内存分配访问无效

问题描述

问题描述:工具vs2008需要写个桌面读卡器的activex控件,调用BC900MAPI.dll(BC900MAPI.dll调用了Pcomm.dll)。为了测试,我先写了个winform的demo,在xp系统中可以正常运行(因为win8一直提示初始化失败,就不在win8上测了),代码如下publicpartialclassForm1:Form{[DllImport("BC900MAPI.dll",EntryPoint="BC900_COMMCALL")]publicstaticexternlongBC900_COMMCALL(stringcomm,refulongSOFTVersion);[DllImport("BC900MAPI.dll")]staticexternlongCloseCommPort();[DllImport("BC900MAPI.dll")]staticexternlongBC900_QueryListID(reflongListID_address);intli_pos;stringls_comm;stringls_customerID;publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){ulonglul_SOFTVersion_address=0;longlul_ListID_address=0;ls_comm="COM3";ls_customerID="C0F0000000";//this.textBox1.Text="lul_SOFTVersion_address=="+lul_SOFTVersion_address+";li_return=="+li_return;//CloseCommPort();try{BC900_COMMCALL(ls_comm,reflul_SOFTVersion_address);BC900_QueryListID(reflul_ListID_address);this.textBox1.Text=lul_ListID_address.ToString();}catch(Exceptionex){this.textBox1.Text=ex.Message;return;}}}既然测试在xp通过,那我就在xp上activex控件了,[Guid("67CDD409-61A4-4f47-82AA-D2B738E29019")]publicpartialclassReaderCard:UserControl,IObjectSafety{[DllImport("BC900MAPI.dll",EntryPoint="BC900_COMMCALL")]publicstaticexternlongBC900_COMMCALL(stringcomm,refulongSOFTVersion);[DllImport("BC900MAPI.dll")]staticexternlongCloseCommPort();[DllImport("BC900MAPI.dll")]staticexternlongBC900_QueryListID(reflongListID_address);publicintli_pos;publicstringls_comm="COM3";publicstringls_customerID;publicstringiskh;publicstringprekh;publiclongl_return;publicReaderCard(){InitializeComponent();}publicstringGetStr(){return"这是测试";}publicvoidreadCard(){longid_Address=0;ulongSOFTVersion=0;l_return=BC900_COMMCALL(ls_comm,refSOFTVersion);l_return=BC900_QueryListID(refid_Address);this.iskh_l=id_Address.ToString();}publicstringgetKH(){readCard();returnthis.iskh;}后面的是IObjectSafety的实现,没考出来然后再把它生成exe的文件setup.exe和SetupReader.msi,为了方便调,没弄成cab的然后简单写个html调用<headrunat="server"><title>无标题页</title><scripttype="text/javascript">functionpassValue(){document.getElementById("textValue").value=document.getElementById("hello").GetStr();}functionpassValueA(){document.getElementById("textValueA").value=document.getElementById("hello").getKH();}</script></head><body><objectclassid="clsid:67CDD409-61A4-4f47-82AA-D2B738E29019"codebase="setup.exe"width="200"height="40"id="hello"></object><formid="form1"runat="server"><div><inputid="textValue"type="text"/><inputid="Button1"type="button"value="GetStr"onclick="passValue()"/><inputid="textValueA"type="text"/><inputid="Button2"type="button"value="getR"onclick="passValueA()"/></div></form></body></html>点第一个按钮正常的,点第二个按钮,调用dll的,就提示内存分配访问无效了求帮助哇。。。

解决方案

解决方案二:

解决方案三:
我还试了别的dll,也是这么写,可以调用成功的,求救
解决方案四:
求救求救求救求救求救求救求救求救求救求救

时间: 2024-07-29 06:06:09

求帮助 C#编写activex时,调用外部dll,提示 内存分配访问无效的相关文章

访问php时提示内存位置访问无效的解决办法和思路分析_win服务器

我们就需要找到是哪一个DLL文件加载出现了问题.排查方法是: 将php.ini中 display_startup_errors = Off 改为display_startup_errors = On . 这是访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查. 把出问题的dll都用分号(;)注释掉后,php就可以正常运行了. 如果加载失败的d

异常-c# 程序调用外部dll文件对采集模块进行读写,不定时出现以下错误

问题描述 c# 程序调用外部dll文件对采集模块进行读写,不定时出现以下错误 问题签名: 问题事件名称: BEX 应用程序名: NangGang11.20.vshost.exe 应用程序版本: 9.0.21022.8 应用程序时间戳: 47316898 故障模块名称: MSVCR80.dll 故障模块版本: 8.0.50727.6195 故障模块时间戳: 4dcddbf3 异常偏移: 00008aa0 异常代码: c000000d 异常数据: 00000000 解决方案 光给出一个异常信息,天知

MSsql 增删改某个表时,用触发器调用外部DLL通知外部窗体程序

问题描述 数据库修改记录已经可以触发并顺利调用这个DLL了,但是怎么才能在调用的DLL里给主窗体程序传送数据呢?比如把消息显示在主窗体的文本框上或者在DLL里调用主窗体的方法?//////////////////////////////////////触发器调用的DLLusingSystem;usingSystem.Data;usingSystem.Data.SqlClient;usingMicrosoft.SqlServer.Server;namespaceSQLTrigger{publicp

Windows服务,调用外部DLL。安装时提示“无法加载一个或多个请求类型”

问题描述 1.目前的程序是Windows服务(代码在WinForm程序验证通过移植过来,代码没有问题)2.我正在我本机做安装这一步,使用的是VS自带的安装工具InstallUtile3.做的是一个调用摄像头拍照的功能,引入的DLL较多,且根据文档这些DLL还在不同的目录(Bin文件夹下5个,Bin文件夹下再创建一个文件夹下10几个),均是需要调用到的4.调用的方法是用的是DllImport方法,如图:5.具体的报错如截图 解决方案 解决方案二:如果还有描述不清楚的地方,可以发出来解决方案三:我确

ssis的script task作业失败(调用外部dll)

原文 ssis的script task作业失败   我的ssis作业包里用了一个script task,会查询一个http的页面接口,获取json数据后解析然后做后续处理,其中解析json引用了本地目录下的第三方的类库:Newtonsoft.Json.dll 在vs环境中调试包的时候报错 ? 1 2 3 4 5  在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, 

asp.net(c#)中怎么调用外部dll中的事件(dll为C++写的COM组件)?我把那个dll导进来了,但是不会用它里面的事件,谁能教教我,着急。。。

问题描述 如题 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子被推荐(加精)后,帖主可以获得88分的可用分奖励:2:帖子结帖后会返还帖主50%的悬赏分,无满意结帖不返还分数:3:接下来会不断增加新的可用分获取途径,比如参与活动赠送等,请大家多关注

dll lib-VBA调用外部自己编写的dll问题

问题描述 VBA调用外部自己编写的dll问题 当dll中处理的过程比较长,想让Excel VBa中显示处理进度要怎样做?先谢谢各位高手 解决方案 自己编写的dll的话,可以放一个回调函数,回调函数中更新进度条. 解决方案二: vba 调用 dlljava调用CC++编写的DLL文件问题loadrunner调用外部Dll

activex-Web调用ATL ActiveX控件,IE8无法打开网页,IE7可以运行,但提示内存访问冲突!

问题描述 Web调用ATL ActiveX控件,IE8无法打开网页,IE7可以运行,但提示内存访问冲突! 我的参考文章http://blog.csdn.net/u010258235/article/details/16823543,自己按照这个步骤试了一下,但是打开html网页时提示如下: Internet Explorer 已经为了帮助保护您的计算机而关闭此网页 运行不正常的加载项或恶意加载项导致 Internet Explorer 关闭此网页. 您可以执行以下操作: 转到主页 尝试返回查看的

vb.net-Vb.net 调用C++ dll遇到的问题

问题描述 Vb.net 调用C++ dll遇到的问题 头文件里的方法时这样的 /**@brief 创建一个会议实例,每次调用都会获得一个新的会议实例 *@param[in] nCompentSet 需要加载的组件,参考定义 *CONF_PARAM_COMPONENT_AS = 0x001L, *CONF_PARAM_COMPONENT_DS = 0x002L, *CONF_PARAM_COMPONENT_PL = 0x004L, *CONF_PARAM_COMPONENT_CB = 0x008L