【问题标题】:OpenCV with cuda MS Visual Studio 2008OpenCV 与 cuda MS Visual Studio 2008
【发布时间】:2012-11-22 18:59:17
【问题描述】:

我正在研究 GPU 上的计算机视觉问题,我正在尝试使用 openCV 来解决。我使用 Cmake 完成安装,然后使用 Visual Studio 2008 构建项目。然后我在 Visual Studio 2008 中编写了一个小程序来测试 openCV 安装,然后构建项目。该项目构建得非常好,但是当我尝试运行程序(ctrl+F5)时,屏幕上会出现一条消息,提示

“程序无法启动,因为您的计算机中缺少 cudart32_42_9.dll。请尝试重新安装程序以解决问题。”

这个错误是关于什么的?如何正确运行带有 cuda 程序的 openCV 而不会出现任何错误?我有一个项目的最后期限,我无法在最后 4 天内完成这项工作。这太令人沮丧了。现在一切都已正确安装,但最终这件事让我发疯了。如果有人能帮助我解决这个问题并指导我正确运行带有 cuda 的 openCV,我将非常高兴和感激。感谢您的所有帮助。

【问题讨论】:

  • 您运行的是 32 位还是 64 位窗口?您似乎已将您的应用程序与 32 位 cuda 4.2 运行时相关联。看看您是否可以在您的计算机上找到 cudart32_42_9.dll(可能使用 windows 搜索)并将其复制到与您尝试运行的 openCV 可执行文件相同的位置。
  • 我正在运行 64 位窗口。
  • 您复制了文件吗?你安装了 cuda 工具包和 sdk 了吗?
  • 我确实找到了 cudart32_42_9.dll,您建议我将其添加到 openCV 可执行文件位置。您能否更明确地了解位置,例如哪个文件夹。我还想提一提 cudart32_42_9.dll 存在于 NVdia SDK.2\C\Commom\bin 中,并且我已经在 tools->options->projects and solutions->VC++directories- 中包含了路径> 可执行文件(来自下拉菜单的显示目录)。这是正确的过程吗?无论如何,如果您能提及 openCV 可执行文件位置,那将会很有帮助
  • 您在 MS VS 2008 下编译应用程序,对吗?当您编译应用程序时,它会创建一个(通常)称为可执行文件的 .exe 文件。您构建的这个 .exe 文件将位于您正在构建的项目的 MS VS 项目目录中。找到在 MS VS 中构建时正在构建的 .exe 文件。然后将 cudart dll 文件复制到该位置。您正在进入此绑定,因为您有 64 位窗口但链接到 32 位 cudart。您在 VC++ 目录中所做的更改不会影响可执行文件的 dll 加载路径。

标签: visual-studio-2008 opencv cuda


【解决方案1】:

该问题可以通过找到 cudard32_42_9.dll 文件来解决(cudart32 和 cudart64 文件都将包含在 SDK 或示例中,但是 cuda 工具包中只有一个文件,具体取决于您加载的是 32 位还是 64 位工具包),然后将该文件复制到与您尝试运行的程序相同的位置。我相信这个困难的原因是使用 64 位 Windows,并安装 64 位 takeit,只有 64 位 cudart 版本被安装到 Windows 的适当 dll 加载路径。如果您构建应用程序并将其链接到 32 位 cudart 库,则相应的 32 位 cudart dll 将不会自动位于正确的加载路径上。但是可执行文件的位置始终在该可执行文件的 dll 加载路径上,因此可以将 cudart dll 文件放在那里作为解决方法。

【讨论】:

  • 使用 CUDA5,它们已经清理了很多,因此您不再需要单独的图形驱动程序、cuda、SDK、下载并全部安装在正确的位置 - 它可以正常工作 (tm)
  • CUDA 5 仍然有一个separate installer 用于 32 位窗口和 64 位窗口,所以我不确定它是否能解决这个特定问题。这不是没有安装必要部件之一的问题。这是安装 64 位工具包然后链接到 32 位库的问题。
  • 是的,你的回答是正确的,CUDA 安装至少变得更容易了,这让我松了一口气
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 2013-10-20
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多