我用C++调用C#的DLL 在VS2005环境下 用MFC调用C#写的一个dll 编译成功 但是一运行就出现下面的一段异常情况: 
未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。其他信息: 未能加载文件或程序集“*******, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。未能找到或加载类型。 (异常来自 HRESULT:0x80131522)搞了两天 网上能搜的东西都搜了 就是搞不出来 
改为Unicode也不行 
大家谁遇到过这种问题 给解释一下是怎么回事和怎么解决呗~~

解决方案 »

  1.   

    未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。
    找到相应的模块修改代码..
      

  2.   

    c# dll是啥业务逻辑?有关文件方面的操作么?
      

  3.   

    dll作为程序集加载失败。不是Dll的问题吧
      

  4.   

    可以看看你这个DLL文件属性中安全权限设置.
      

  5.   

    http://support.microsoft.com/kb/828736
      

  6.   

    http://blog.csdn.net/panyaxiong/archive/2007/04/25/1585052.aspx
    http://www.cppblog.com/mzty/archive/2007/05/30/25157.html 
    这两个也或许有用
      

  7.   

    用 Filemon.exe 监视下文件相关的操作,看看是哪里出现错误。
      

  8.   

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

  9.   

    晕 把ole32拷进去之后 我飞信不能运行了 
    删了 闷了
      

  10.   

    C++如果想调用C#的DLL可能要把C#的DLL弄成COM.不能直接调用。通过接口调用。
      

  11.   

    写了多个测试程序 那个dll调用成功了
    控制台调用 MFC多文档调用 都可以成功
    但是一到我的那个多文档工程就不行 还是这个错误提示
      

  12.   

    ole32.dll
    这个文件好像是 MDAC的一个dll,建议重新安装一下 mdac,这个需要手动安装一下。
      

  13.   

    我对一个资源空间自己定义了一个dlg类 用VS添加的 工程原先是VC建的
    在工程里 不用这个类 也会出现上面的提示
    但是如果把这两个类从工程中移除 那就不会出现上面的提示 就可以正常运行
    应该不是C#的DLL问题 也应该不会是BCG的问题
    另外 这个提示是编译器自身的提示 应该本程序本身没关系DEBUG版本会出这个提示
    release版本可以运行 不出提示这个类 和其他的VC创建的类不同在于
    少了很多预处理(防止文件包含的那些预处理),少了下面这些代码:
    CPP文件:#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endifH文件:#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)
    这个地方应该不会有问题
      

  14.   

    现在问题更简单了 
    公共语言运行库支持(/clr) 改为 无公共语言运行库支持 就可以了
    也就是 开着CLR托管就挂掉
      

  15.   

    可能是你C++获C#程序根本就没安装好,出现错误,要不重新装C++获c#开发环境试试