C++ 将stdafx.h文件包含在C++;使用opencv编程

C++ 将stdafx.h文件包含在C++;使用opencv编程,c++,opencv,C++,Opencv,下面是一个示例代码。如果删除stdafx.h文件,程序将无法编译 stdafx.h文件 '#pragma once '#include "targetver.h" '#include <stdio.h> '#include <tchar.h> ”#pragma一次 #包括“targetver.h” "包括 "包括 捕获.ccp //Capture.cpp:定义控制台应用程序的入口点。 // ”#包括“stdafx.h” “#包括“string.h” “#包括“cv

下面是一个示例代码。如果删除stdafx.h文件,程序将无法编译

stdafx.h文件

'#pragma once

'#include "targetver.h"

'#include <stdio.h>
'#include <tchar.h>
”#pragma一次
#包括“targetver.h”
"包括
"包括
捕获.ccp

//Capture.cpp:定义控制台应用程序的入口点。 //

”#包括“stdafx.h”
“#包括“string.h”
“#包括“cv.h”
“#包括“highgui.h”
int _tmain(int argc,字符**argv[])
{
CvCapture*pCapture=0;
IplImage*pVideoFrame=0;
int i;
字符文件名[50];
//初始化vieo捕获
pCapture=cvCaptureFromCAM(CV\u CAP\u ANY);
如果(!pCapture)
{
fprintf(stderr,“未能初始化视频捕获\n”);
返回-1;
}
//捕获三个视频帧并将其作为文件写入

对于(i=0;i它是编译器的一部分,用于加速构建。

它是编译器的一部分,用于加速构建。

正如peterchen所说,它用于加速构建和添加一些Windows内容。这包括完全特定于visual studio的,如果您希望您的程序跨平台,则不应使用它,这就是Op的情况en Cv库(您可以在windows、linux等环境下使用opencv)


您的编译错误消息是什么?

正如peterchen所说,它用于加速构建和添加一些Windows内容。这包括完全特定于visual studio的,如果您希望您的程序是跨平台的,即Open Cv库(您可以在Windows、linux等环境下使用opencv),则不应使用它


您的编译错误消息是什么?

特定于Visual studio,而不是windows。您可以将gcc与mingw一起使用;-)总之,这是我写给fast的;)我现在就编辑我的答案。嗯?它不会加快在其他平台上的构建速度,但没有理由会破坏任何东西。它只是一个头文件。即使是GCC也支持
#pragma once
IIRCIt会因为它不存在而中断,如果导入它,它会引用其他不存在的包含。至少,你应该在它周围设置防护对于一个MSVC/Windows构建。编译超标准的附加组件并不意味着你必须使用它们。C++在设计上是很蹩脚的,但是你必须处理它。——- RUP:不幸的是,在所有情况下都不是。对于预编译头的默认设置,VC5-2008期望<代码>包含“STDAFX.H”。
即使正确的路径是,例如,
”。/stdafx.h“
(我不知道VS2010,但我不会赌一磅狗粮来修复它。)另外,stdafx.h之前的所有声明/包含在设置为预编译头时都会被忽略。特定于Visual studio,而不是windows。你可以将gcc与mingw一起使用;-)完全是,我写给fast的;)我现在就编辑我的答案。嗯?它不会加快其他平台上的构建,但没有理由会破坏任何东西。它只是一个heade即使GCC支持<代码>·{语用}一旦<不存在,它就会中断,如果你导入它,它引用其他不存在的内容。至少,你应该有一个守护程序来检查MSVC/Windows构建。编译超标准的非标准附加组件的事实并不意味着你必须使用它。C++是设计上的蹩脚。“,”但你必须处理它。-@Rup:不幸的是,并非所有情况下都是如此。对于预编译头的默认设置,VC5-2008期望
#包括“stdafx.h”
,即使正确的路径是
”。/stdafx.h“
(我不知道VS2010,但我不会赌一磅狗粮来修复它。)此外,在STDAFX.H被设置为预编译头时,所有声明/包含都被忽略。请不要使用“γ”语用矩,它不是C++,而是编译器依赖的。请使用“包含保护”(“请”)。请不要使用“γ”语法,它不是C++,而是编译器依赖的。使用“包含保护”()。。如果要删除它,则需要修改该.cpp文件(或所有文件)的编译设置删除“使用预编译头”选项-这就是它失败的原因。但没有理由。如果在整个应用程序中广泛使用这些头,您也可以将它们移动到其中,以保存整个应用程序中的重新编译。如果要删除它,您需要修改该.cpp文件(或所有文件)的编译设置删除“使用预编译头”选项-这就是它失败的原因。但没有理由。如果头在应用程序中广泛使用,您也可以将更多头移到其中,以保存整个应用程序的重新编译。
'#include "stdafx.h"
'#include "string.h"
'#include "cv.h"
'#include "highgui.h"




int _tmain(int argc, char ** argv[])
{
CvCapture * pCapture = 0;
IplImage * pVideoFrame = 0;
int i;
char filename[50];

//Initialize vieo capture
pCapture = cvCaptureFromCAM( CV_CAP_ANY );
if( !pCapture )
{
    fprintf(stderr, "failed to initialize video capture\n");
    return -1;
}

//Capture three video frames and write them as files
for(i=0;i<20;i++)
{
    pVideoFrame = cvQueryFrame( pCapture );
    if( !pVideoFrame )
    {
        fprintf(stderr, "failed to get a video frame\n");
    }

    //Write the captured video frame as an image file
    sprintf(filename, "VideoFrame%d.jpg", i+1);
    if( !cvSaveImage(filename, pVideoFrame))
    {
        fprintf(stderr, "faile dto write image file %s\n", filename);
    }

    //IMPORTANT : Don't release or modify the image returned 
    //from cvQueryFrame() !
}

//Terminate video capture and free capture resources
cvReleaseCapture( &pCapture );
return 0;
}