0

我有一个在 VS2010 中使用 opencv 2.4 生成的 64 位 dll (Imageloc.dll)。在 Windows 7 上调用它时工作正常。但是,当我在 Windows 2000 服务器上运行它时,它给了我

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“Imageloc.dll”或其依赖项之一。指定的模块无法找到。在 Test.Program.Main(String[] args)

我在 Windows 2000 上设置了如下环境路径值,就像 Windows 7

C:\Applications\opencv\build\x64\vc10\bin; C:\Applications\opencv\build\common\tbb\intel64\vc10;

安装在 c:\Applications\opencv 中的 openCv 2.4 产品

Visual Studio 安装在 Windows 7 上,但未安装在 Windows 2000 上。

任何帮助表示赞赏。

更新:我在另一台装有 Windows 7 但没有 Visual Studio 的计算机上运行它,它给了我同样的错误。我用 Visual Studio 在 Windows 2000 上运行它,它工作正常。Visual Studio 如何使其工作?

dll 的程序是用 c++-cli 编写的,并在 /MD 中编译。它可能与 C 运行时库或 CLR dll 的某些 dll 有关吗?

4

4 回答 4

1

I imagine that you would have trouble running a 64-bit DLL on any 32-bit operating system, not just Windows 2000...

于 2012-07-18T23:49:38.230 回答
1

如果在 Win2K 机器上安装 Visual Studio 可以使您的程序正常工作,那么您可能缺少 Visual C++ 运行时。您可以将 C++ 代码设置为不需要运行时进行编译,但对于单个部署,安装运行时同样容易。

x86:http ://www.microsoft.com/en-us/download/details.aspx?id=5555

x64:http ://www.microsoft.com/en-us/download/details.aspx?id=14632

于 2012-07-19T03:12:03.163 回答
0

这是因为它缺少在编译 /clr /md 选项期间加载的 dll

于 2012-07-19T15:57:20.567 回答
0

这次更仔细地阅读了这个问题后,我可以指出 Visual Studio 2010 应用程序不会在早于 Windows XP Service Pack 2 的任何设备上运行,因为旧版本的 Windows 没有它使用的所有 API。但是,在 Windows 2000 中使用 Visual Studio 2010 编译的 C++ DLL 的问题答案之一确实提出了一种可能的解决方法,即您可能能够提供一个存根库来实现缺失的导入。

于 2012-07-19T18:41:25.657 回答