C#:动态链接库(DLL)初始化例程失败

时间:2019-06-05 12:04:40

标签: c# dll dllimport

我正在尝试复制其他使用CyStat.dll的应用程序的功能。这是应用程序本身

https://mega.nz/#!sIRggKST!UEeAWgcT9ONbyc0WgFagI-0G36zxvEK1dMwzw3NYd60

它基本上是特定打印机的状态监视工具

我的问题是这样的:每次尝试使用dll时都会出现此错误:

'Unable to load DLL 'CyStat.dll': A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A)'

我知道通常是因为缺少某些依赖项。这是它使用的依赖项:

enter image description here

它们肯定存在于我的机器上,顺便说一句,我尝试复制的原始应用程序运行良好

这是我用来从dll调用方法的代码:

    [DllImport("CyStat.dll", CharSet = CharSet.Ansi, SetLastError = true)]
    public static extern int CvInitialize([MarshalAs(UnmanagedType.LPWStr)] string pszPortName);

    var res = CvInitialize("DS-RX1");

我还尝试从那里反编译该应用程序并复制粘贴代码,但是失败并出现相同的错误

在此先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

因此,我遇到了该错误,伴随有System.DllNotFoundException,我没有立即注意到 我的dll依赖kernel32.dll和winspool.drv。当我注意到该异常时,我意识到我试图在64位系统上加载32位dll。所以我只是尝试了64位版本,所以效果很好