取消预编译头
Ⅰ 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反) 怎么调试
你是在vs中使用c文件。首先要调用c函数的地方,加上extern "c"{ #include "xx.h"},把c所用的头文件放这里面;
然后在vs工程里面设置不使用预编译头
project->configuration property->c/c++->precompiled headers->选not using precompiled heads
Ⅱ fatal error C1010: 在查找预编译头时遇到意外的文件结尾...
fatal error C1010: 在查找预编译头时遇到意外的文件结尾是因为没选择“不使用预编译头”。解决步骤如下:
1、首先第一步就是要进行使用预编译头文件“stdafx.h”,这时候注意的是加入第三方c/cpp文件没有#include "stdafx.h",就会报此错误。
Ⅲ 如何本地安装SIFT
SIFT的实现有很多版本,具体方式都是那么几个,找个好用的不太容易,因为对于代码不熟练者各种版本用起来都有点水土不服,需要调整调整才行。本人是在VS2010下使用的Rob Hess的源码。
一、前提
安装Opencv,详见:VS2010+Opencv-2.4.0的配置攻略(该版本SIFT是基于Opencv的)。
下载SIFT源码,见Rob Hess的主页(别告诉我不懂英文不知道下载链接在哪,下那个Windows VC++的版本 sift-latest_win.zip)。
二、测试
1、解压sift源码,发现有如下文件:
5、C语法设定:分别打开imgfeatures.h和sift.h,让所有函数包含在
#ifdef __cplusplusextern"C"{#endif
和
#ifdef __cplusplus }#endif
之间。例如:
View Code
... #ifdef __cplusplusextern"C"{#endif...externintsift_features( IplImage* img,structfeature**feat ); ...externint_sift_features( IplImage* img,structfeature** feat,intintvls,doublesigma,doublecontr_thr,intcurv_thr,intimg_dbl,intdescr_width,intdescr_hist_bins ); #ifdef __cplusplus }#endif#endif
PS:我只是用了_sift_features(...)等几个函数,所以只加了两个头文件的C语法声明,如果是用了其他的头文件,均需要添加。
6、综上,你应该可以直接使用sift相关函数了,参照siftfeat.c中的写法,用用_sift_features(...)试试!
实际上如果只需要使用SIFT特征提取的函数,前面几步只需要复制imgfeatures.c imgfeatures.h sift.c sift.h utils.c utils.h这6个文件就够了
Ⅳ VC++6.0中出现这样的错误提示“意外的文件结尾而寻找预编译头指令”
设置一下即可,
打开VC->选中Project->Setting->C/C++,在下拉列表中选中预编译->不使用预编译头。
Ⅳ VS2010创建C++工程 “预编译头”选不选中,有没有区别
在vs2013下测试了一下,选中与否生成的项目结构是一样的。如果不选中预编译头,只保留mycpp1.cpp并作出相应修改,构建是可以通过的。如果是勾选了预编译头,只保留mycpp1.cpp是不可以编译通过的。正如最快回答中所说的,不选中,stdafx.h只是个普通的头文件,产生的文件结构一样只是采用了同一个模板而已。如果你仔细查看过工程的属性里有个选项就是预编译头,创建项目的时候预编译头的勾选与否,对应的就是这里这个选项,对应到编译阶段就是是否查找stdafx.h并且将它视为预编译头。
Ⅵ opencv,vc++6.0,编译程序老是出错和警告; warning D4002 : ignoring unknown option '/Qwd167'
你好:
error C1010: unexpected end of file while looking for precompiled header directive.
可能原因为工程中 stdafx.h 未包含。
//
在VC 6.0中编译c++程序时报该错原因为需要一个预编译的文件stdafx.h, 如果不需要编译该头文件的话,只需要打开seting 页面设置中在c/c++栏,选择PreCompiled headers,然后设置第一选项,选择不使用预编译头,解决这个问题。
或者
直接打开dsp工程文件,找到 /Yu"stdafx.h"去掉即可。
//
一般来说,在编译某个文件时,往往发现编译器指向某个源码文件的末尾,并且提示以上信息时,直接在cpp顶上加一项"stdafx.h".
而且不管文件所处是否和stdafx.h文件在同一目录中。编译后即可通过,没必要去修改编译开关。一般而言:预编译功能是解决大量标头文件重复编译的问题。
在stdafx.h头中,我们一般把那些公用的头文件放置在其中。特别是调用dll组件包时,dll引入到工程中。
Ⅶ VC6.0如何在项目设置里取消预编译头
工程→设置→C/C++→分类里选择“预编译的头文件”→选择“不适用预补偿页眉”