我用C++调用C#的DLL 在VS2005环境下 用MFC调用C#写的一个dll 编译成功 但是一运行就出现下面的一段异常情况:
未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。其他信息: 未能加载文件或程序集“*******, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。未能找到或加载类型。 (异常来自 HRESULT:0x80131522)搞了两天 网上能搜的东西都搜了 就是搞不出来
改为Unicode也不行
大家谁遇到过这种问题 给解释一下是怎么回事和怎么解决呗~~
未处理的“System.IO.FileLoadException”类型的异常出现在 未知模块 中。其他信息: 未能加载文件或程序集“*******, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。未能找到或加载类型。 (异常来自 HRESULT:0x80131522)搞了两天 网上能搜的东西都搜了 就是搞不出来
改为Unicode也不行
大家谁遇到过这种问题 给解释一下是怎么回事和怎么解决呗~~
找到相应的模块修改代码..
http://www.cppblog.com/mzty/archive/2007/05/30/25157.html
这两个也或许有用
有 一个可能有问题的 NOT FOUND的就是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ole32.dll 没找到解决方法 我就顺手从system32里转移过去一个ole32.dll
删了 闷了
控制台调用 MFC多文档调用 都可以成功
但是一到我的那个多文档工程就不行 还是这个错误提示
这个文件好像是 MDAC的一个dll,建议重新安装一下 mdac,这个需要手动安装一下。
在工程里 不用这个类 也会出现上面的提示
但是如果把这两个类从工程中移除 那就不会出现上面的提示 就可以正常运行
应该不是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)
这个地方应该不会有问题
公共语言运行库支持(/clr) 改为 无公共语言运行库支持 就可以了
也就是 开着CLR托管就挂掉