【发布时间】:2012-03-05 23:16:51
【问题描述】:
我正在为 C++ 类制作 C++/CLI 包装器,但通过构建我的 C++/CLI 项目创建的 DLL 无法在 C# 中加载,Assembly.Load 引发 fileNotFound 异常,并显示消息“无法加载文件或程序集 'CLIExport.dll' 或其依赖项之一。系统找不到指定的文件。"
C++/CLI项目仅包含包装类、C++类和C++类依赖的一个头文件,解决方案中已添加源文件和头文件,未添加任何引用。是否需要在 C++/CLI 项目中添加对 C++ 类的引用?我不知道 C# 应用程序认为程序集缺少什么,也不知道我需要添加什么引用,C++/CLI 项目是否需要引用它使用的每个 .net 类型,如类系统命名空间?
谢谢。
【问题讨论】:
-
您是否尝试将 x86 库加载到 64 位项目中?
-
我不相信,我在 64 位 PC 上与我正在测试的 C# 项目在同一台机器上制作了 C++/CLI 项目。你能在 64 位机器上创建 x86 库吗?
-
使用dependencywalker.com并打开包装器DLL,看看是否缺少任何依赖项。
-
使用依赖walker 尝试打开DLL 时出现错误。 “错误:由于隐式依赖模块中缺少导出功能,至少一个模块具有未解析的导入。错误:找到具有不同 CPU 类型的模块。警告:未找到至少一个延迟加载依赖模块。警告:在由于延迟加载相关模块中缺少导出功能,至少有一个模块存在未解析的导入。”它说 IESHIMS.dll 丢失
-
在找到 IESHIMS.dll 并再次在依赖 walker 中加载 dll 后,我收到以下错误。 “错误:由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入。错误:找到具有不同 CPU 类型的模块。警告:由于缺少导出函数,至少一个模块具有未解析的导入一个依赖于延迟负载的模块。”
标签: .net c++-cli assemblies