2010-09-18 30 views
10

Tôi đã cài đặt Microsoft Visual C++ Express Edition, Phiên bản 9.0.30729.1 SP. Trình biên dịch dòng lệnh đi kèm với nó là Phiên bản 15.00.30729.01 cho 80x86. Tôi đã cài đặt OpenCV 20.0a.khó khăn với "cl.exe" (trình biên dịch dòng lệnh từ VisualStudio) và tệp tiêu đề!

Tôi muốn biên dịch chương trình sau đây:

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

Có điều là, tôi làm KHÔNG muốn sử dụng "thị giác" khía cạnh của Visual C++, tôi muốn sử dụng trình biên dịch dòng lệnh đó là "cl.exe".

Khi tôi cố gắng để biên dịch chương trình này, tôi nhận được lỗi:

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 

Vì vậy, tôi đã cố gắng để thể chỉ định với/Tôi thích

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

Và sự thay đổi này của chúng, với hy vọng rằng/Tôi bằng cách nào đó sẽ nói với cl.exe nơi cv.h là, nhưng tôi nhận được cùng một lỗi.

Như một lưu ý phụ, tôi không biết nếu đó là liên quan nhưng tôi nhận thấy rằng không có tập tin "cv.h" trong "C: \ OpenCV2.0 \ src \", nhưng thay vì một tập tin gọi là "_cv .h "! Vì vậy, tôi đã thay đổi tiêu đề cho phù hợp, nhưng vẫn còn.

Tôi nghĩ mình có thể lập trình bằng C++ nhưng tôi không hiểu cách xác định vị trí tệp header/linker, đặc biệt với cl.exe vì tôi chỉ sử dụng gcc trước và tôi không nghĩ mình biết những gì tôi đang làm ngay bây giờ. Xin hãy giúp tôi để biên dịch này! Tôi muốn bắt đầu trong OpenCV.

Trả lời

-5

Không có khía cạnh trực quan của Visual Studio. Nó chỉ là một cái tên. Tất cả các chương trình C++ được biên dịch với cl.exe. Trình biên dịch C++ không có kiến ​​thức về bất kỳ thứ gì về hình ảnh - nó chỉ là một thương hiệu. Tuy nhiên, cl.exe chỉ có thể được gọi từ bên trong Visual Studio. Nó không phải là một trình biên dịch dòng lệnh.

+4

Bạn lấy ý tưởng ở đâu về việc cl chỉ có thể được gọi từ bên trong Visual Studio - đó là khá đơn giản. cl có thể được gọi từ dòng lệnh, ví dụ: khi được sử dụng trong makefiles, các tệp mứt, thông qua SCons, vv hoặc các môi trường xây dựng khác. –

+1

http://msdn.microsoft.com/en-us/library/ms235639(VS.80).aspx - Đó là gì, không thể sử dụng dòng lệnh thông thường? – Puppy

10

Trước hết, hãy chắc chắn thiết lập môi trường bằng cách gọi một trong các tệp lô đi kèm với Visual Studio, ví dụ: vsvars32.bat được tìm thấy trong thư mục Visual Studio của bạn dưới Common7 \ Tools. Trong quá trình cài đặt, thường có một mục trình đơn bắt đầu được tạo ra để mở một bảng điều khiển và thực thi kịch bản thiết lập. Điều này sẽ đảm bảo các biến môi trường được thiết lập đúng cách và trình biên dịch và mối liên kết có quyền truy cập vào tập tin tiêu đề, thư viện, công cụ này trên con đường của bạn, vv

Bạn sẽ tìm thấy các tùy chọn dòng lệnh cl liệt kê vào đây để tài liệu: Compiler Command-Line Syntax

Đối với OpenCV: Hãy xem cấu trúc thư mục của OpenCV. Đó là

OpenCVRootFolder\include\opencv\cv.h 

vì vậy bạn thường sẽ đi trước và nói:

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

và trong mã của bạn, bao gồm tiêu đề cv qua:

#include <opencv\cv.h> 

...hoặc bạn chỉ có thể đi trước và làm

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

và đơn giản bao gồm

#include <cv.h> 

Tôi không thấy lý do tại sao bạn sẽ không muốn sử dụng Visual Studio, mặc dù. Nó chỉ là một IDE, không có tính năng buộc bạn hoặc bao gồm nếu bạn không muốn chúng.

Các vấn đề liên quan