社区
C#
帖子详情
C#调用第三方dll异常 高手来看看怎么处理
liuhongwei90
2010-06-25 04:06:34
试图在不先将托管代码转换出的情况下调入它们。不要试图在底层本机扩展性点(如向量异常处理程序)内运行托管代码,因为这样会导致损坏或数据丢失。
就这个异常 有人看到过没?
...全文
1013
30
打赏
收藏
C#调用第三方dll异常 高手来看看怎么处理
试图在不先将托管代码转换出的情况下调入它们。不要试图在底层本机扩展性点(如向量异常处理程序)内运行托管代码,因为这样会导致损坏或数据丢失。 就这个异常 有人看到过没?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
maozhu_yimi
2010-08-30
打赏
举报
回复
鄙视29楼,
csdn是让大家学习的地方,你这样搞,不是浪费大家时间吗?
更隐隐觉得,他就是一忽悠,其实自己根本不会,只是骗分的
Jia_Ma
2010-06-26
打赏
举报
回复
在使用第三方动态连接库时的错误吗?我以前遇到过,部分代码段无法调试。给我个邮箱,我发解决方案给你
yao2004jessica
2010-06-26
打赏
举报
回复
you dian nanban
yilaozhuang
2010-06-26
打赏
举报
回复
路过,学习下,第三方的dll能保证正确不
loveSoftandhxy
2010-06-26
打赏
举报
回复
检查堆栈跟踪以确定激活此 MDA 的线程。 该线程正在尝试非法调入托管代码。 堆栈跟踪应该显示使用此扩展性点的应用程序代码、提供此扩展性点的操作系统代码和被该扩展性点中断的托管代码。
例如,在尝试从向量异常处理程序内部调用托管代码时,您将看到该 MDA 被激活了。 在堆栈上,您将看到操作系统异常处理代码和一些触发诸如 DivideByZeroException 或 AccessViolationException 等异常的托管代码。
在此示例中,正确的解决办法是完全以非托管代码实现向量异常处理程序。
参考:http://msdn.microsoft.com/zh-cn/office/ms172237.aspx
kid_wang
2010-06-26
打赏
举报
回复
楼主,你贴的那段代码根本不是出场的地方,而是最后错误返回的地方,你要贴调用dll的代码,这样才能知道是哪个地方出问题了。
看那个提示,不再托管代码转换出就调入,可能说明这个dll是非托管的代码,在你调用的时候没有被CLR转换
成托管代码。
你可以参照:http://msdn.microsoft.com/zh-cn/magazine/cc164193.aspx
zhu_jiang
2010-06-25
打赏
举报
回复
不用贴了,贴了也没用,怎么异常信息都不会有的,断下来的位置都不是异常产生的地址,异常信息也是全是空白,按我的方法去找把
parellax
2010-06-25
打赏
举报
回复
贴代码出来先....
jianuMan
2010-06-25
打赏
举报
回复
贴代码吧
这样看不出来
zhu_jiang
2010-06-25
打赏
举报
回复
你那个应该是三方的托管类库,用peid检查下是什么语言写的吧,如果是托管类库那么修复工作应比较简单,
如果是非托管,好像更简单,搞不定就开个300分贴子,我看见了帮你搞下
doubleu2005
2010-06-25
打赏
举报
回复
还是从头查一遍吧
zhu_jiang
2010-06-25
打赏
举报
回复
IDA pro
不清除楼主需求是什么,但普通程序是用不着这些的
liuhongwei90
2010-06-25
打赏
举报
回复
可以推荐一个C++ 的反编译工具么
应该是那个第三方类库的问题
那个东西我用C++自带的那个 可以查看类库函数列表的那个东西
还打不开
只能看到他调用了kernel32 和其他几个dll
zhu_jiang
2010-06-25
打赏
举报
回复
这种处理方法连断点都能拦截,可惜,托管代码写总会存在点问题
zhu_jiang
2010-06-25
打赏
举报
回复
检查你的程序,看那个位置封装了Kernel32.dll中的addVectoredExceptionHandler,
RemoveVectoredExceptionHandler,然后在程序中找到封装的方法,再检查那个位置引用了这个方法,把它给去掉.
zhu_jiang
2010-06-25
打赏
举报
回复
做过,因为你使用托管代码封装了veh异常处理,这样就会优先于结构化异常调用,也就是说可以截获任何异常了,我曾经用托管代码这样写过,结果是我的调试器基本失去了调试作用
结论,改用vc++封装了自己的veh异常
allen3010
2010-06-25
打赏
举报
回复
学习来了
liuhongwei90
2010-06-25
打赏
举报
回复
MainForm 没有鼠标事件
xk1126
2010-06-25
打赏
举报
回复
代码代码代码!
huwen7565833
2010-06-25
打赏
举报
回复
对MainForm 的代码!!!
加载更多回复(10)
java使用jna
调用
c#
中
dll
的方法详解
前一段时间接了个项目,需要用到
第三方
提供的
C#
编写的
dll
,本身项目是java语言,所以便有了下面这篇文章,本文给大家介绍了关于java中如何使用jna
调用
c#
中
dll
的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起
看看
吧。
C#
写的Windows服务
调用
外部EXE通用服务可配置多个外部程序,注册后就可以
最近需要将一个程序用服务来启动现有的一个EXE程序,在网上找了很多的例子,的确有,但是发现最后所有都正常,就是外部程序的界面不显示,这个感觉有点空欢喜一场,然后查录百度等,都是说服务的界面交互要打上勾,但是这样做之后弹出一个提示窗口,单开一看是外部EXE的界面,我晕,一看这个exe的界面有点吓到我,显示很是蹩脚啊,哈哈,感觉这个仍然不是一个解决办法,后面有继续百度啊,后面发现一些博客里面有一个关于
调用
一个
第三方
的Cjwdev.WindowsApi.
dll
就可以了。抱着半信半疑的心态去做了,发现要找到这个
dll
也不容易啊,找了半天硬是没有找到,后面只能去下载了一个软件安装一下之后,找到安装目录把里面的
dll
给拷贝出来啦。后面就………………………………………………。
金蝶ERP云星空cloud WebAPI
第三方
对接
本教程使用语言为
c#
,主要内容为
第三方
软件与金蝶云星空对接,实现单据信息读取,审核、保存等功能,对企业ERP实现自动化操作
C#
客户端程序
调用
外部程序的3种实现方法
简介 大家都知道,当我们用
C#
来开发客户端程序的时候,总会不可避免的需要
调用
外部程序或者访问网站,本篇博客介绍了三种
调用
外部应用的方法,供参考,下面话不多说了,来一起
看看
详细的介绍吧。 实现 第一种是利用shell32.
dll
,实现ShellExecute方法,该方法可同时打开本地程序、文件夹或者访问网站,只要直接输入路径字符串即可, 如C:\Users\Desktop\xx.exe或者https://cn.bing.com/,可以根据返回值判断是否
调用
成功 (成功0x00000002a , 失败0x00000002) Window wnd = Window.GetWindow(this
好用的反编译工具.NET Reflector 6.1.0.11(截至2010.08.19最新版)
NET程序员的开发利器.NET Reflector 一、 简介 程序集,作为.NET时代的动态链接库,蕴藏了太多的软件秘密。为此,Visual Studio内置的ILDASM成为最初挖掘程序集的上佳工具。但自从Reflector出现后,ILDASM相形见拙。因为,Reflector能提供更多的程序集信息,而且是免费的工具。 如今,在Visual Studio.NET中编译源代码(无论是VB还是
C#
)时,编译器都会将高级源代码翻译成MSIL,即“微软中间语言”,而不是特定的机器指令。具有更多安全性、版本控制、共享能力与其它相关元数据的中间语言(IL),是包在一个或多个
DLL
或可执行文件中的。 基于ILDASM检查程序集中的IL有时很有用,但它要求我们熟悉MSIL。通常,比起IL,大多数开发人员对像
C#
或Visual Basic这样的高级程序设计语言更为熟悉。 Reflector的出现使.NET程序员眼前豁然开朗,因为这个免费工具可以将.NET程序集中的中间语言反编译成
C#
或者Visual Basic代码。除了能将IL转换为
C#
或Visual Basic以外,Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对
第三方
插件的支持。 二、 下载与运行Reflector Reflector是由微软员工Lutz Roeder编写的免费程序。这个软件经常更新,你可以在http://www.aisto.com/roeder/dotnet下载最新的版本。在本文成文之时,Reflector的最新版本为5.0.35.0,仅有1M大小。只要双击下载后的Reflector.exe文件即可运行Reflector。 默认情况下,Reflector会打开一组公共程序集(mscorlib、System、System.Data、System.Drawing等等)。每个打开的程序集都列在Reflector的主窗口中。单击程序集旁边的+图标可以展开树结构并展示程序集的命名空间。每个命名空间旁边都有一个相关的+图标,单击这个图标将显示这个命名空间内的类。除此以外,还可以展开每个类,显示类的成员:事件、字段、方法与属性。 要想查看其它程序集(包括我们自己创建的程序集)的细节,你可以使用菜单命令“File→Open”。然后,浏览到想要查看的程序集。只要选择了有效的.NET程序集,这个程序集就可以在Reflector的主窗口中与其它默认程序集共同显示。要想从Reflector的主窗口中删除程序集,只需右击程序集并选择“Close”。 三、 使用Reflector反汇编程序集 提供基本的程序集是Reflector唾手可得的功能,然而,Reflector真正的威力体现在它的反汇编能力。只要浏览到类级的成员,就可以通过Tools菜单中的Disassembler项(或在该项上单击右键)反汇编此成员。这将打开第二个窗格,以
C#
、Visual Basic、Delphi或者IL显示反汇编后的内容。图2以
C#
语言展示了对SmtpClient类中Abort方法的反汇编结果。 有了Reflector的反编译功能,要研究.NET框架基类库就容易多了。我们完全可以在没有源代码的情况下研究我们所创建或者正在使用的程序集相应源代码。 不用太担心,你自己的.NET应用程序还有其它受保护措施。但是,想阻止别人查看.NET程序集的IL(继而反编译成
C#
或者Visual Basic)是不可能的,但你可以使用“混淆”技术使IL变得混乱。目前,市场上有许多.NET混淆产品,比如:PreEmptive Solution的Dotfuscator、WiseOwl的Dmeanor以及Remotesoft的.NET Obfuscator等。 四、 Reflecator的其它功能 除了作为对象浏览器与反汇编器之外,Reflector还可以显示类与其成员的
调用
与被
调用
图、提供单键访问Google或MSDN搜索的能力并提供了允许
第三方
开发人员为Reflector创建插件的框架。 要查看
调用
或被
调用
图,只需要在树视图中选择一个成员,访问Tools菜单,选择Call Graph或Callee Graph选项即可。Call Graph会列出所选项所
调用
的成员,而Callee Graph列出
调用
所选项的成员。 通过使用插件,Reflector的功能可以得到进一步扩展。目前有能显示程序集依赖图、自动加载当前运行中的程序集、输出整个程序集的反汇编内容以及在Visual Studio中作为Reflector的宿主等的插件。还有更多插件都列在http://www.codeplex.com/reflectoraddins中。在此,我极力推荐有兴趣的读者前去一看。 不出乎所料,的确存在一个Reflector.VisualStudio插件。有了这个插件,就可以让Reflector集成在Visual Studio环境中,进而取代以前那个有些“拙漏”的对象浏览器。 首先,我们需要在机器上准备Reflector的最新版,然后从http://www.testdriven.NET/reflector下载最新版本的Reflector.VisualStudio插件。据说安装了此插件之后,Reflector能够与Visual Studio完美融合。但遗憾的是,本人试下载此软件并安装(仅能得到TestDriven.NET-2.8.2130 RTM个人测试版本,时间7/30/2007,大小3.3M)后,没有大发现—仅是在VS2005中添加“Go to Reflector”和一个帮助菜单项。点击“Go to Reflector”菜单项仅是从VS2005内部启动Reflector而已。 有了Reflector.VisualStudio插件(正版,下面是根据在线资料介绍),Reflector可以寄在Visual Studio中Reflector不仅是一个对象浏览器、反汇编器,包裹在同一个程序中的所有功能还可以寄于Visual Studio中。 五、 小结 还记得Spy++吗?在Win32时代,这个软件对于我们分析一个陌生软件的设计思路可谓立下汗马功劳。在如今的.NET时代,Reflector又成为每个严肃的.NET开发人员工具箱中必不可少的精髓工具之一。怎么样,请赶紧试锋吧。
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章