我已经安装了 Microsoft Visual C++ Express Edition,版本 9.0.30729.1 SP。 它附带的命令行编译器版本为 15.00.30729.01,适用于 80x86。 我已经安装了 OpenCV 20.0a。
我要编译以下程序:
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *img = cvLoadImage("funny-pictures-cat-goes-pew.jpg");
cvNamedWindow("Image:",1);
cvShowImage("Image:",img);
cvWaitKey();
cvDestroyWindow("Image:");
cvReleaseImage(&img);
return 0;
}
问题是,我不想使用 Visual C++ 的“视觉”方面,我想使用“cl.exe”命令行编译器。
当我尝试编译这个程序时,出现错误:
C:\visualcpp>cl OpenCV_Helloworld.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved.
OpenCV_Helloworld.cpp
OpenCV_Helloworld.cpp(6) : fatal error C1083: Cannot open include file: 'cv.h': No such file or directory
所以我试着用/I like this 来说明
C:\visualcpp>cl /I "C:\OpenCV2.0\src\cv" OpenCV_Helloworld.cpp
及其变体,希望/I 能以某种方式告诉 cl.exe cv.h 在哪里,但我得到了同样的错误。
作为旁注,我不知道这是否相关,但我注意到“C:\OpenCV2.0\src\”中没有文件“cv.h”,而是一个名为“_cv.h”的文件。 H”!所以我相应地更改了 header ,但仍然如此。
我想我可以用 C++ 编程,但我不明白如何指定头文件/链接器文件的位置,尤其是 cl.exe,因为我以前只用过 gcc,我想我不知道是什么我现在正在做。请帮我编译这个!我想开始使用 OpenCV。
最佳答案
首先,请确保通过调用 Visual Studio 附带的批处理文件之一来设置环境,即位于 Common7\Tools 下的 Visual Studio 文件夹中的 vsvars32.bat。在安装过程中,通常还会创建一个开始菜单条目,它会打开一个控制台并执行安装脚本。这将确保环境变量设置正确,编译器和链接器可以访问头文件、库、工具等。
您将在此处找到用于文档的 cl 命令行选项:Compiler Command-Line Syntax
关于 OpenCV:看一下 OpenCV 的目录结构。这是
OpenCVRootFolder\include\opencv\cv.h
所以你通常会继续说:
cl /I"X:\OpenCVRootFolder\include" [...] source.cpp /LINK [...]
在您的代码中,通过以下方式包含 cv header :
#include <opencv\cv.h>
...或者你可以继续做
cl /I"X:\OpenCVRootFolder\include\opencv" [...] source.cpp /LINK [...]
和简单的包含
#include <cv.h>
不过,我不明白您为什么不想使用 Visual Studio。它只是一个 IDE,没有任何功能强加给您或包含在您不希望的功能中。
关于visual-c++ - "cl.exe"(来自 VisualStudio 的命令行编译器)和头文件的困难!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741774/