程序运行出现异常 搞了两天也没搞出来

cdmalcl 2009-12-02 03:18:26
我用C++调用C#的DLL 在VS2005环境下 用MFC调用C#写的一个dll 编译成功 但是一运行就出现下面的一段异常情况:
未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。

其他信息: 未能加载文件或程序集“*******, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。未能找到或加载类型。 (异常来自 HRESULT:0x80131522)


搞了两天 网上能搜的东西都搜了 就是搞不出来
改为Unicode也不行
大家谁遇到过这种问题 给解释一下是怎么回事和怎么解决呗~~
...全文
384 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdmalcl 2009-12-05
  • 打赏
  • 举报
回复
现在问题更简单了
公共语言运行库支持(/clr) 改为 无公共语言运行库支持 就可以了
也就是 开着CLR托管就挂掉
Kingston 2009-12-05
  • 打赏
  • 举报
回复
可能是你C++获C#程序根本就没安装好,出现错误,要不重新装C++获c#开发环境试试
cdmalcl 2009-12-04
  • 打赏
  • 举报
回复
我对一个资源空间自己定义了一个dlg类 用VS添加的 工程原先是VC建的
在工程里 不用这个类 也会出现上面的提示
但是如果把这两个类从工程中移除 那就不会出现上面的提示 就可以正常运行
应该不是C#的DLL问题 也应该不会是BCG的问题
另外 这个提示是编译器自身的提示 应该本程序本身没关系

DEBUG版本会出这个提示
release版本可以运行 不出提示

这个类 和其他的VC创建的类不同在于
少了很多预处理(防止文件包含的那些预处理),少了下面这些代码:
CPP文件:

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

H文件:

#if !defined(AFX_SETSYSTEMCONFIGDLG_H__5E541450_B522_4BE4_83CE_F5243865371D__INCLUDED_)
#define AFX_SETSYSTEMCONFIGDLG_H__5E541450_B522_4BE4_83CE_F5243865371D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#endif

但是我加上了这些东西还是不行 还是一样的提示
AFX_SETSYSTEMCONFIGDLG_H是我自己改的名 后面的东西是从其他类中扒来的 后来也改过几次数字 都不行

另外还有一个地方不同:
DECLARE_DYNAMIC(CSetSystemConfigDlg)
IMPLEMENT_DYNAMIC(CSetSystemConfigDlg, CDialog)
这个地方应该不会有问题
cdmalcl 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zengfanxing 的回复:]
未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。
找到相应的模块修改代码..
[/Quote]
怎么找?

[Quote=引用 13 楼 alonesword 的回复:]
用 Filemon.exe 监视下文件相关的操作,看看是哪里出现错误。

[/Quote]
程序运行后我用你说的这个监视了下 大部分文件都找到了
有 一个可能有问题的 NOT FOUND的就是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ole32.dll 没找到解决方法 我就顺手从system32里转移过去一个ole32.dll
孤剑 2009-12-03
  • 打赏
  • 举报
回复
ole32.dll
这个文件好像是 MDAC的一个dll,建议重新安装一下 mdac,这个需要手动安装一下。
cdmalcl 2009-12-03
  • 打赏
  • 举报
回复
写了多个测试程序 那个dll调用成功了
控制台调用 MFC多文档调用 都可以成功
但是一到我的那个多文档工程就不行 还是这个错误提示
cdmalcl 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zanfeng 的回复:]
C++如果想调用C#的DLL可能要把C#的DLL弄成COM.不能直接调用。通过接口调用。
[/Quote]
应该可以的 我用控制台程序搞成功了
只不过的确不能这么弄下去 一到数据转换的时候就很麻烦了
足球中国 2009-12-03
  • 打赏
  • 举报
回复
C++如果想调用C#的DLL可能要把C#的DLL弄成COM.不能直接调用。通过接口调用。
cdmalcl 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cdmalcl 的回复:]
引用 2 楼 zengfanxing 的回复:
未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。
找到相应的模块修改代码..

怎么找?

引用 13 楼 alonesword 的回复:
用 Filemon.exe 监视下文件相关的操作,看看是哪里出现错误。


程序运行后我用你说的这个监视了下 大部分文件都找到了
有 一个可能有问题的 NOT FOUND的就是  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ole32.dll 没找到解决方法 我就顺手从system32里转移过去一个ole32.dll

[/Quote]
晕 把ole32拷进去之后 我飞信不能运行了
删了 闷了
孤剑 2009-12-02
  • 打赏
  • 举报
回复
用 Filemon.exe 监视下文件相关的操作,看看是哪里出现错误。
cdmalcl 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hitlcyu19 的回复:]
http://support.microsoft.com/kb/828736
[/Quote]

没看懂 写的太含糊了
问题还没有解决
hitlcyu19 2009-12-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/panyaxiong/archive/2007/04/25/1585052.aspx
http://www.cppblog.com/mzty/archive/2007/05/30/25157.html
这两个也或许有用
hitlcyu19 2009-12-02
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/828736
linbiao523 2009-12-02
  • 打赏
  • 举报
回复
可以看看你这个DLL文件属性中安全权限设置.
guyehanxinlei 2009-12-02
  • 打赏
  • 举报
回复
表面上看是DLL加载时错误
ErrorCode1987 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 errorcode1987 的回复:]
好像是没装.net frameworm吧
[/Quote]
打错了.net framework
zr2199 2009-12-02
  • 打赏
  • 举报
回复
dll作为程序集加载失败。不是Dll的问题吧
ErrorCode1987 2009-12-02
  • 打赏
  • 举报
回复
好像是没装.net frameworm吧
xuenzhen123 2009-12-02
  • 打赏
  • 举报
回复
帮顶~
V68V6 2009-12-02
  • 打赏
  • 举报
回复
c# dll是啥业务逻辑?有关文件方面的操作么?

加载更多回复(2)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧