【问题标题】:difficulties with "cl.exe" (command line compiler from VisualStudio) and header files!“cl.exe”(来自 VisualStudio 的命令行编译器)和头文件的困难!
【发布时间】:2010-09-18 12:58:47
【问题描述】:

我已安装 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

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

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

我想我可以用 C++ 编程,但我不明白如何指定头文件/链接器文件的位置,尤其是使用 cl.exe,因为我以前只使用过 gcc,我想我不知道是什么我现在正在做。请帮我编译这个!我想开始使用 OpenCV。

【问题讨论】:

    标签: visual-c++ opencv


    【解决方案1】:

    首先,请务必通过调用 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,没有强加给您的功能,也没有您不想要的功能。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你从哪里得到 cl 只能从 Visual Studio 中调用的想法——这几乎是完全错误的。 cl 当然可以从命令行调用,例如在 makefile、jam 文件、通过 SCons 等或其他构建环境中使用时。
      • msdn.microsoft.com/en-us/library/ms235639(VS.80).aspx - 那是什么,不能使用常规命令行?
      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多