“cl.exe”(VisualStudio的命令行编译器)和头文件的困难!

时间:2010-09-18 12:58:48

标签: visual-c++ opencv

我已经安装了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;
}

问题是,我 NOT 想要使用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

所以我试着指定/我喜欢这个

C:\visualcpp>cl /I "C:\OpenCV2.0\src\cv" OpenCV_Helloworld.cpp

及其变体,希望/我会以某种方式告诉cl.exe cv.h在哪里,但我得到同样的错误。

作为旁注,我不知道这是否相关,但我注意到“C:\ OpenCV2.0 \ src \”中没有文件“cv.h”,而是一个名为“_cv”的文件。 H”!所以我相应地更改了标题,但仍然。

我认为我能够在某种程度上用C ++编程,但我不明白如何指定头文件/链接器文件位置,特别是使用cl.exe,因为我之前只使用过gcc而且我认为我不知道是什么我现在正在做请帮我编译一下!我想开始使用OpenCV。

2 个答案:

答案 0 :(得分:10)

首先,确保通过调用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标头:

#include <opencv\cv.h>

......或者你可以继续做

cl /I"X:\OpenCVRootFolder\include\opencv" [...] source.cpp /LINK [...]

和简单包括

#include <cv.h>

我不明白为什么你不想使用Visual Studio。它只是一个IDE,如果您不想要它们,则不会强制使用或包含这些功能。

答案 1 :(得分:-6)

Visual Studio没有视觉方面。这只是一个名字。所有C ++程序都使用cl.exe编译。 C ++编译器不知道任何视觉信息 - 它只是一个品牌。但是,只能从Visual Studio中调用cl.exe。它不是命令行编译器。