为什么我的C ++程序找不到所需的.dll文件?

Why can't my c++ program find the necessary .dll file?

我正在尝试使用OpenCV(计算机视觉库),该文件似乎使用了位于C:\\OpenCV\\bin(已添加到系统PATH变量中)的几个.dll文件。 但是,如果我尝试运行一个简单的测试程序,则会出现系统错误:

The program can't start because highgui.dll is missing from your computer. Try reinstalling the program to fix this problem.

如果我将highgui.dll文件复制到system32文件夹中,则可以使用,但是我不想将所有必需的.dll文件都放在system32文件夹中。

有谁知道为什么找不到.dll文件,或者我应该怎么做才能解决它?
(我已经检查了PATH变量中的所有路径的有效性。)


我在运行并启动之前跟踪了由Netbeans生成的可执行文件,它没有给出错误(因此Netbeans可能会使用其自己的路径来执行),因此试图找出如何使Netbeans搜索DLL的正确路径的方法。 ,并添加环境变量PATH = C:/OpenCV2.1/bin("项目属性">"运行">"环境")后,程序可以正确运行!
我确实希望这不是一种"偶然"解决我的问题同时产生更严重副作用的黑客手段...
谢谢您的帮助!


我在使用Visual Studio 12时遇到了这个问题,在检查以确保第十次没有打错我的PATH后,我注意到上一条路径的分号后有一个空格。我将其删除,Visual Studio能够找到所需的DLL。

如果您的PATH变量中存储了多个路径,请确保它们之间用分号分隔,且没有空格。


我将OpenCV 2.2与Visual Studio 10一起使用,以创建一个新项目,我执行以下步骤...
1.VC ++目录->包含目录-> C:\ OpenCV2.2 \ include
库目录-> C:\ OpenCV2.2 \ lib
2.C / C ++->常规->其他包含目录-> C:\ OpenCV2.2 \ bin
3.链接器->输入-> opencv_core220.lib; opencv_highgui220.lib; opencv_calib3d220.lib; lib; opencv_objdetect220.lib; opencv_ts220.lib; opencv_video220.lib;

  • 我将所有dll文件复制到项目调试文件夹中。
    它没有给我任何障碍,一切都很好。

  • 如何启动程序以及如何更新PATH变量?

    如果在命令窗口中更新路径,但从IDE或Windows桌面启动应用程序,则启动过程的环境可能会与命令窗口的环境具有不同的PATH设置。

    同样,如果您在"系统控制面板"小程序中更改PATH,则它可能不会对您进行PATH编辑之前启动的IDE或命令窗口产生影响。


    您是否尝试过将highgui.dll复制到构建文件夹中。由于它是动态链接的,因此您的程序将在本地查找以找到它,如果未将其复制到构建目录中,则将无法找到它。