EmguCV - 找不到 nvcuda.dll
Posted
技术标签:
【中文标题】EmguCV - 找不到 nvcuda.dll【英文标题】:EmguCV - nvcuda.dll could not be found 【发布时间】:2012-09-17 16:21:12 【问题描述】:有人要求我构建一个实时人脸识别应用程序,在环顾四周后,我决定尝试 EmguCV 和 OpenCV 作为人脸识别库。
我目前遇到的问题是尝试安装 SDK 并使其正常工作。我已经按照here 的说明尝试让它运行,但我仍然无法运行示例。每当我尝试运行它们时,都会出现错误
The program can't start because nvcuda.dll is missing from your computer.
Try reinstalling the program to fix this problem.
我已经尝试了大多数常见的修复方法,例如将 bin 文件夹添加到我的环境路径并将 dll 复制到我的 system32 文件夹中,但似乎都不起作用。
EmguCV 版本 2.4.2.1777-windows-x64-gpu Windows 8 AMD Radeon HD 6700 系列显卡。我假设这是我没有 nVidia 显卡的问题,但我不确定我能做些什么。现在,我将尝试重新编译源代码而不是使用下载的 .exe,看看是否有帮助。
有什么建议吗?
【问题讨论】:
【参考方案1】:遇到同样的问题,EmguCV 2.4.2(无论是 x86 还是 x64)是用 GPU 编译的,你必须有支持 CUDA 的 nvidia GPU。所以,如果你想要例如。 C# 中 2.4 的 Fisherfaces - 等待非 GPU 版本或购买/借用 CUDA 卡;)
【讨论】:
【参考方案2】:我碰巧遇到了和你一样的问题。在我的电脑(WinXP 32 位)上一切正常,但在 Win7 64 位电脑上却不行。 这是因为在我的计算机上我已经安装了 OpenCV 2.4.2,当我执行我的程序时,OpenCV dll 的路径指向 OpenCV 文件夹,而不是 EmguCV 文件夹中的 dll。原始的 OpenCV dll 对 NVidia 的驱动程序没有这种依赖性。
按照here 的建议,我使用Dependency Walker 帮助我了解发生了什么。
This 链接说只有 -gpu 包启用了 gpu 处理,但正如你所说的最新版本 (2.4.2) 只有一个 gpu 包而没有 no-gpu 包...
我读到here 说我只需要下载最新的 NVidia 驱动程序来获取 nvcuda.dll 文件,但我下载了很多包但从未找到此文件:gpu computing sdk, cuda toolkit、显示驱动程序、设备驱动程序...
我的解决方法是使用来自 OpenCV 2.4.2 的原始 dll,而不是使用旧版本的 EmguCV/OpenCV。
【讨论】:
很好的答案!但是你能告诉我在哪里可以找到 OpenCV 2.4.2 的 .dll 文件吗? (什么目录) 下载this 文件。执行/提取它。 .dll 位于 ./build/x86 或 x64/vc10/bin 中。 奇怪,这并不能解决我的问题。我已将它们包含在我的项目中并将文件复制到可执行目录中。但我仍然得到同样的错误...... 尝试使用Dependency Walker 来识别哪个 dll 正在请求 nvcuda.dll。【参考方案3】:我刚刚使用了来自 dll-files.com 的nvcuda.dll。
【讨论】:
我没有工作。我也觉得单个dll文件可能解决不了依赖问题。 这对我有用。给定的 dll 是 X86 版本。如果它不适合您,您的程序可能是 x64 版本。【参考方案4】:问题似乎在于该站点上的最新版本不包含非 GPU 增强下载,而 GPU 增强下载需要 nVidia 显卡才能集成 CUDA。
我成功下载并运行了之前没有 GPU 增强功能的版本。
【讨论】:
【参考方案5】:我有类似的问题。 当我使用 NVIDIA gpu 在计算机上编译和运行我的应用程序时,它工作正常。 问题是当我将应用程序移动到另一台计算机时。 第二台计算机没有 NVIDIA gpu,它抛出了“Emgu.CV.CvInvoke”异常。 经过多次尝试,我幸运地解决了这个问题。 正如你之前提到的,现在只有 2.4.2 版的 gpu 包。 我以前没有注意到这一点。
对我来说,解决方案是:
将文件:“cudart64_42_9.dll”和“npp_42_9.dll”复制到调试(应用程序)文件夹中 将文件“nvcuda.dll”复制到 System32 文件夹中。 完成此步骤后,即使没有 NVIDIA gpu/CUDA,应用程序也可以在所有计算机上运行。其他解决方案可能是使用 opencv 通用 gpu 版本(目前是 alpha 2.4.9)链接:http://sourceforge.net/projects/emgucv/files/emgucv/2.4.9-alpha/
【讨论】:
【参考方案6】:你可以从 GIT 下载 EmguCV 源代码并编译它,我已经完成了这个工作:
http://www.emgu.com/wiki/index.php/Download_And_Installation#Building_from_Git
它会生成非 GPU 版本的 dll
问候。
【讨论】:
【参考方案7】:这里还有另一个 dll 的副本: http://www.kimchiandchips.com/files/vvvv/nvcuda/
所以 2 个解决方案:
-
从上述链接获取 NVidia CUDA DLL。理想情况下,根据您所需的平台将 64 位或 32 位版本重命名为 nvcuda.dll。放在你的 opencv dll 旁边
升级到具有通用 GPU 支持的 2.4.9
【讨论】:
【参考方案8】:我在使用 EmguCV 进行人脸识别的论文时也遇到了一些问题。 尝试使用最稳定的版本 libemgucv-windows-x86-2.4.0.1717.exe 尽量不要用gpu下载,这个版本bug最少,32位比x64好。 第一次编译时使用visual studio 2012。 使用此版本,您无需安装上述所有内容。你可以看看这个例子就知道它真的有效:http://sourceforge.net/projects/emgufacerecog/
【讨论】:
以上是关于EmguCV - 找不到 nvcuda.dll的主要内容,如果未能解决你的问题,请参考以下文章
AndroidStudio 很多类红色高亮找不到,可以编译运行
Win7下在Visual Studio 2008里运行程序时出现找不到MFC90D.dll文件, Command Prompt找不指定路径