为什么我的c ++程序找不到必要的.dll文件?

时间:2010-04-15 22:39:11

标签: c++ dll path opencv system

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

  

程序无法启动,因为您的计算机缺少highgui.dll。尝试重新安装该程序以解决此问题。

如果我将highgui.dll文件复制到system32文件夹中,它可以正常工作,但我不想将所有必需的.dll文件放在system32文件夹中。

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

5 个答案:

答案 0 :(得分:1)

我在运行并启动它之前跟踪了Netbeans构建的可执行文件,它没有给出错误(因此Netbeans可能使用自己的路径执行),所以试图找出如何使Netbeans搜索正确的路径对于DLL,在添加环境变量PATH = C:/OpenCV2.1/bin (项目属性>运行>环境)之后,程序运行正常!
我希望这不是某种黑客攻击“偶然”解决我的问题,同时产生更糟糕的副作用...... 谢谢你的帮助!

答案 1 :(得分:0)

您是否尝试过将highgui.dll复制到您的构建文件夹中。由于它是动态链接的,你的程序会在本地查找它,如果它没有被复制到你的构建目录中,它将无法找到它。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

我正在使用OpenCV 2.2和Visual Studio 10.创建一个新项目我执行以下步骤... 1.VC ++目录 - >包含目录 - > C:\ OpenCV2.2 \包括                       图书馆目录 - > C:\ OpenCV2.2 \ LIB 2.C / C ++ - >一般 - >其他包含目录 - > C:\ OpenCV2.2 \ bin 3.Linker - >输入 - > opencv_core220.lib; opencv_highgui220.lib; opencv_calib3d220.lib; opencv_contrib220.lib; opencv_features2d220.lib; opencv_ffmpeg220.lib; opencv_flann220.lib; opencv_gpu220.lib; opencv_imgproc220.lib; opencv_legacy220.lib; opencv_ml220.lib; opencv_objdetect220.lib; opencv_ts220。 LIB; opencv_video220.lib;

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

答案 4 :(得分:0)

我使用Visual Studio 12遇到了这个问题,并且在检查后确保我的PATH中第十次没有拼写错误时,我注意到前一个路径的分号后面有一个空格。我删除它,Visual Studio能够找到我需要的DLL。

如果您的PATH变量中存储了多个路径,请确保它们用分号分隔无空格