无法在WPF C#应用程序中加载DLL

无法在WPF C#应用程序中加载DLL,c#,wpf,dll,dllimport,C#,Wpf,Dll,Dllimport,在调试模式下运行我的C#WPF应用程序时,我收到以下错误消息(VS2010): 无法加载DLL'VCECLB.DLL':找不到指定的模块。(HRESULT异常:0x8007007E) 发生此错误的代码为(请参阅hDevEnum): namespace imprex.FLExGrabber { 公共类枚举器:IEnumerator { 私人IntPtr hDevEnum; vcecb_EnumData EnumData; ///默认构造函数 公共枚举器() { enumData.cbSize=(U

在调试模式下运行我的C#WPF应用程序时,我收到以下错误消息(VS2010):

无法加载DLL'VCECLB.DLL':找不到指定的模块。(HRESULT异常:0x8007007E)

发生此错误的代码为(请参阅hDevEnum):

namespace imprex.FLExGrabber
{
公共类枚举器:IEnumerator
{
私人IntPtr hDevEnum;
vcecb_EnumData EnumData;
///默认构造函数
公共枚举器()
{
enumData.cbSize=(UInt32)Marshal.SizeOf(enumData);
//打开枚举器句柄

hDevEnum=NativeFunctions.vcecb_EnumInit();此类错误有两个常见原因:

  • 您引用的DLL不在DLL搜索路径上,或
  • 已找到您引用的DLL,但找不到其依赖项

  • 通过将DLL放在与可执行文件相同的目录中来解决问题1。通过确保安装了所有依赖项来解决问题2。通常这涉及部署DLL所依赖的MSVC运行时。

    此类错误有两个常见原因:

  • 您引用的DLL不在DLL搜索路径上,或
  • 已找到您引用的DLL,但找不到其依赖项

  • 通过将DLL放在与可执行文件相同的目录中来解决问题1。通过确保安装了所有依赖项来解决问题2。通常这涉及部署DLL所依赖的MSVC运行时。

    您可以将VCECLB.DLL放在解决方案中的任何位置(例如,在根目录中通过拖放)

    然后,添加文件后,右键单击文件,选择属性

    在高级三级:

    • 在构建操作中选择内容

    • 始终在复制到输出目录中复制

    要获得类似以下内容的信息:


    您可以将VCECLB.dll放在解决方案中的任何位置(例如,在根目录中通过拖放)

    然后,添加文件后,右键单击文件,选择属性

    在高级三级:

    • 在构建操作中选择内容

    • 始终在复制到输出目录中复制

    要获得类似以下内容的信息:



    尝试将确切的DLL(如错误消息中所示)放在与您的.EXECOUL相同的文件夹中。EXECOUL将是的副本,即尝试将非托管DLL(本机)加载到托管(.net)中项目,如果是这样的话,请检查@DrKoch我已经做好了准备,但它仍然会给我同样的错误message@TommyGrovnes你是对的,但我不明白他是如何将dll添加到项目中的..!如果我尝试使用在“引用”下添加dll,它将不起作用。请检查批准答案上的注释,将其添加到项目中,复制等(与CodeInNet建议的相同)尝试将确切的DLL(如错误消息中所示)放在与您的.execoull相同的文件夹中,即尝试将非托管DLL(本机)加载到托管(.net)中项目,如果是这样的话,请检查@DrKoch我已经做好了准备,但它仍然会给我同样的错误message@TommyGrovnes你是对的,但我不明白他是如何将dll添加到项目中的..!如果我尝试使用在“引用”下添加dll,它将不起作用。请检查批准答案上的注释,将其添加到项目中,复制等(与CodeInNet建议的相同)现在它将vcecb.dll复制到my.exe所在的同一文件夹中。不幸的是,我仍然收到相同的错误消息!在看到您的更新后,您必须对vcecb.dll依赖项(vcecb.dll引用dll)执行相同的操作好的-现在的问题是,我不知道VCECLB.dll的依赖项是什么。Dependency Walker的结果在这方面看起来不太有希望。我将与供应商核实并更新此问题。很好,找到解决方案后请告诉我:)我找到了解决方案-请参见上文!感谢帮助!现在它复制了VCECLB.dll位于my.exe所在的同一文件夹中。不幸的是,我仍然收到相同的错误消息!在看到您的更新后,您必须对VCECLB.dll依赖项(VCECLB.dll引用dll)执行相同的操作好的-现在的问题是,我不知道vcecb.dll的依赖项是什么。Dependency Walker的结果在这方面看起来不太乐观。我会与供应商联系,并不断更新这个问题。好的,找到解决方案后告诉我:)我找到了解决方案-见上文!感谢帮助!1)我将相同的.dll放入了存在exe->问题的目录仍然存在2)如何确定是否安装了所有依赖项?当我在VS2010中运行该项目时,它使用的是同一个dll。那么,您对该dll了解多少?从哪里获得的?您是否询问过向您提供该dll的人其依赖项是什么?该dll直接来自供应商,因此我没有进一步的信息。Dependency Walker在这种情况下有帮助吗(见上文)?Dependency walker会有所帮助。但只允许您进行反向工程和猜测。您应该与供应商联系,或者查阅DLL随附的文档。问题是,正如您所期望的那样,一些DLL丢失了。我从供应商那里得到了一些附加的DLL,现在可以使用我收到一条错误消息!感谢您的支持!1)我将相同的.dll放在目录中,但exe->问题仍然存在2)如何确定是否安装了所有依赖项?当我在VS2010中运行该项目时,它使用的是相同的dll。那么,您对该dll了解多少?您从哪里获得的?您问过提供给您的人吗它的依赖项是什么?dll直接来自供应商,因此我没有进一步的信息。依赖项Walker在这种情况下有帮助吗(见上文)?依赖项Walker会有帮助。但只允许您反向使用enginee
    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);
        }
    
     }
    }