未找到本机 DLL
Native DLL Not found
我有一个使用 Tesseract 从图像中提取文本的程序。我通过 P/Invoke 创建了一个在 C# 中使用的本机 C++ DLL。我的 C# 应用程序是基于 x64 的控制台,DLL 也是 64 位的。
部署到 Windows 服务器后,我收到一条错误消息,提示 DLL(我创建的)不存在。错误信息如下。
System.DllNotFoundException: Unable to load DLL 'TesseractX64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Utilities.Finance.PDFParser.PDF.OCRObject.GetUTF8Text(String path, String lang, String imgPath)
我确定该 DLL 存在于该路径中。 TesseractX64.DLL 与 C# 应用程序位于同一文件夹中,因此它应该可以正常工作。
这是我的代码:
[HandleProcessCorruptedStateExceptions]
[DllImport(@"TesseractX64.dll", EntryPoint = "GetUTF8Text", CallingConvention = CallingConvention.Cdecl)]
private static extern IntPtr GetUTF8Text(string path, string lang, string imgPath);
到目前为止我尝试过的:
- 将 DLLImport 路径设置为相对路径,例如 C:\DLL\Tesseract.DLL。还是一样的问题。
- 安装了 Visual C++ 2005 - 2012 x86 和 x64。还是一样的问题。
它在我用来开发程序的 Windows 7 x64 计算机上运行得非常好。
或者:
- 找不到 DLL,或者
- 找不到一个 DLL 的依赖项。
将DLL 放在与可执行文件相同的目录中,以确保可以找到它。
确保在每台需要 运行 您的软件的机器上满足所有 DLL 的依赖关系。这将涉及首先弄清楚这些依赖项是什么。 DLL 的文档应该告诉您该信息。通常这意味着安装 MSVC 运行链接 DLL 的时间。
不允许重新分发调试 运行时间。即使 .NET 代码处于调试模式,您也需要制作本机 DLL 的发布版本。
我有一个使用 Tesseract 从图像中提取文本的程序。我通过 P/Invoke 创建了一个在 C# 中使用的本机 C++ DLL。我的 C# 应用程序是基于 x64 的控制台,DLL 也是 64 位的。
部署到 Windows 服务器后,我收到一条错误消息,提示 DLL(我创建的)不存在。错误信息如下。
System.DllNotFoundException: Unable to load DLL 'TesseractX64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Utilities.Finance.PDFParser.PDF.OCRObject.GetUTF8Text(String path, String lang, String imgPath)
我确定该 DLL 存在于该路径中。 TesseractX64.DLL 与 C# 应用程序位于同一文件夹中,因此它应该可以正常工作。
这是我的代码:
[HandleProcessCorruptedStateExceptions]
[DllImport(@"TesseractX64.dll", EntryPoint = "GetUTF8Text", CallingConvention = CallingConvention.Cdecl)]
private static extern IntPtr GetUTF8Text(string path, string lang, string imgPath);
到目前为止我尝试过的:
- 将 DLLImport 路径设置为相对路径,例如 C:\DLL\Tesseract.DLL。还是一样的问题。
- 安装了 Visual C++ 2005 - 2012 x86 和 x64。还是一样的问题。
它在我用来开发程序的 Windows 7 x64 计算机上运行得非常好。
或者:
- 找不到 DLL,或者
- 找不到一个 DLL 的依赖项。
将DLL 放在与可执行文件相同的目录中,以确保可以找到它。
确保在每台需要 运行 您的软件的机器上满足所有 DLL 的依赖关系。这将涉及首先弄清楚这些依赖项是什么。 DLL 的文档应该告诉您该信息。通常这意味着安装 MSVC 运行链接 DLL 的时间。
不允许重新分发调试 运行时间。即使 .NET 代码处于调试模式,您也需要制作本机 DLL 的发布版本。