2010-09-18 3 views
10

Ich habe Microsoft Visual C++ Express Edition Version 9.0.30729.1 SP installiert. Der Befehlszeilencompiler, der damit geliefert wird, ist Version 15.00.30729.01 für 80 x 86. Ich habe OpenCV 20.0a installiert.Schwierigkeiten mit "cl.exe" (Befehlszeilencompiler von VisualStudio) und Header-Dateien!

Ich mag folgendes Programm kompilieren:

#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; 
} 

Die Sache ist, ich NICHT wollen den „visuellen“ Aspekt von Visual C++ verwenden, mag ich die Befehlszeilen-Compiler verwenden, das ist "cl.exe".

Wenn ich versuche, dieses Programm zu kompilieren, erhalte ich die Fehlermeldung:

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 

Also habe ich versucht, mit specifiy/Ich mag diese

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

und Variationen davon, in der Hoffnung, dass/Ich würde irgendwie cl.exe sagen, wo cv.h ist, aber ich bekomme den gleichen Fehler.

Als eine Randnotiz, ich weiß nicht, ob das verwandt ist, aber ich habe festgestellt, dass es keine Datei "cv.h" in "C: \ OpenCV2.0 \ src \", sondern eine Datei namens "_cv .h "! Also habe ich den Header entsprechend geändert, aber trotzdem.

Ich denke, ich bin in der Lage, in C++ etwas zu programmieren, aber ich verstehe nicht, wie Header/Linker Dateispeicherorte angeben, vor allem mit cl.exe, da ich nur gcc zuvor verwendet habe und ich glaube nicht, dass ich weiß was ich gerade mache. Bitte hilf mir das zu kompilieren! Ich möchte in OpenCV starten.

Antwort

-5

Es gibt keinen visuellen Aspekt von Visual Studio. Es ist nur ein Name. Alle C++ - Programme sind mit cl.exe kompiliert. Der C++ - Compiler hat keinerlei visuelle Kenntnisse - es ist nur eine Marke. cl.exe kann jedoch nur in Visual Studio aufgerufen werden. Es ist kein Befehlszeilencompiler.

+4

Woher hast du die Idee, dass cl nur in Visual Studio aufgerufen werden kann - das ist ziemlich einfach falsch. cl kann natürlich von der Befehlszeile aus aufgerufen werden, zum Beispiel wenn es in Makefiles, Jam-Dateien, über SCons usw. oder anderen Build-Umgebungen verwendet wird. –

+1

http://msdn.microsoft.com/en-us/library/ms235639(VS.80).aspx - Was ist das, kann die normale Befehlszeile nicht verwenden? – Puppy

10

Stellen Sie zunächst sicher, dass Sie die Umgebung einrichten, indem Sie eine der im Visual Studio-Ordner unter Common7 \ Tools enthaltenen Batchdateien aufrufen, die mit Visual Studio geliefert werden, z. B. vsvars32.bat. Während der Installation wird normalerweise auch ein Startmenüeintrag erstellt, der eine Konsole öffnet und das Setup-Skript ausführt. Dadurch wird sich sicher Umgebungsvariablen korrekt eingerichtet und der Compiler und Linker hat Zugriff auf Dateien auf Header, Bibliotheken, Tools sind auf dem Weg usw.

Sie werden die cl-Befehlszeilenoptionen aufgelistet hier für Dokumentation: Compiler Command-Line Syntax

Wie für OpenCV: Werfen Sie einen Blick auf die Verzeichnisstruktur von OpenCV. Es ist

OpenCVRootFolder\include\opencv\cv.h 

so würden Sie in der Regel voran gehen und sagen:

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

und in Ihrem Code, fügen Sie den cv-Header über:

#include <opencv\cv.h> 

...oder Sie können gehen Sie einfach weiter und tun

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

und einfach schließen

#include <cv.h> 

Ich sehe nicht, warum Sie nicht Visual Studio verwenden möchten, though. Es ist nur eine IDE, es sind keine Funktionen erzwungen oder enthalten, wenn Sie nicht möchten.

Verwandte Themen