无法在 WPF C# 应用程序中加载 DLL
Unable to load DLL in WPF C# application
当 运行在调试模式下我的 C# WPF 应用程序时,我收到以下错误消息 (VS2010):
"Unable to load DLL 'VCECLB.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"
出现这个错误的代码是(见hDevEnum):
namespace Imperx.FLExGrabber
{
public class Enumerator:IEnumerator
{
private IntPtr hDevEnum;
VCECLB_EnumData enumData;
/// Default constructor
public Enumerator()
{
enumData.cbSize = (UInt32)Marshal.SizeOf(enumData);
// Open enumerator handle
hDevEnum = NativeFunctions.VCECLB_EnumInit(); <<--- Error message here!!!
}
/// Destructor
~Enumerator()
{
NativeFunctions.VCECLB_EnumClose(hDevEnum);
}
}
}
从使用 windows 表单应用程序的现有项目来看,它 运行 非常完美。现在我需要将此解决方案转换为 WPF-application。因此,我使用同一台机器 (Win7/64ibt) 和相同的 VS2010。平台目标是X64。
问题:我需要在哪里添加 VCECLB.dll 文件到我的项目中?我无法在引用下添加它,因此我将它放入文件夹“...\bin\x64\Release” - 但没有成功。
当我使用 dependency walker 检查 VCECLB.dll 时,我得到以下信息:
问号是否意味着那些 dll 丢失了?如果是这样,为什么我可以 运行 具有相同 VCECLB.dll 的 windows 表单项目?
有人知道我该如何解决这个问题吗?
提前致谢
导致此类错误的常见原因有两个:
- 您引用的 DLL 不在 DLL 搜索路径上,或者
- 找到了您所引用的DLL,但找不到其依赖项。
通过将 DLL 放在与可执行文件相同的目录中解决问题 1。通过确保安装所有依赖项来解决问题 2。通常这涉及部署 DLL 所依赖的 MSVC 运行时。
您可以将 VCECLB.dll 放在解决方案中的任何位置(例如通过拖放放在根目录中)
然后,添加文件后,右键单击文件,选择 属性
进阶三:
在构建操作中选择内容
并且总是复制在复制到输出目录
得到类似下面的东西:
当 运行在调试模式下我的 C# WPF 应用程序时,我收到以下错误消息 (VS2010):
"Unable to load DLL 'VCECLB.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"
出现这个错误的代码是(见hDevEnum):
namespace Imperx.FLExGrabber
{
public class Enumerator:IEnumerator
{
private IntPtr hDevEnum;
VCECLB_EnumData enumData;
/// Default constructor
public Enumerator()
{
enumData.cbSize = (UInt32)Marshal.SizeOf(enumData);
// Open enumerator handle
hDevEnum = NativeFunctions.VCECLB_EnumInit(); <<--- Error message here!!!
}
/// Destructor
~Enumerator()
{
NativeFunctions.VCECLB_EnumClose(hDevEnum);
}
}
}
从使用 windows 表单应用程序的现有项目来看,它 运行 非常完美。现在我需要将此解决方案转换为 WPF-application。因此,我使用同一台机器 (Win7/64ibt) 和相同的 VS2010。平台目标是X64。
问题:我需要在哪里添加 VCECLB.dll 文件到我的项目中?我无法在引用下添加它,因此我将它放入文件夹“...\bin\x64\Release” - 但没有成功。
当我使用 dependency walker 检查 VCECLB.dll 时,我得到以下信息:
问号是否意味着那些 dll 丢失了?如果是这样,为什么我可以 运行 具有相同 VCECLB.dll 的 windows 表单项目?
有人知道我该如何解决这个问题吗? 提前致谢
导致此类错误的常见原因有两个:
- 您引用的 DLL 不在 DLL 搜索路径上,或者
- 找到了您所引用的DLL,但找不到其依赖项。
通过将 DLL 放在与可执行文件相同的目录中解决问题 1。通过确保安装所有依赖项来解决问题 2。通常这涉及部署 DLL 所依赖的 MSVC 运行时。
您可以将 VCECLB.dll 放在解决方案中的任何位置(例如通过拖放放在根目录中)
然后,添加文件后,右键单击文件,选择 属性
进阶三:
在构建操作中选择内容
并且总是复制在复制到输出目录
得到类似下面的东西: