取消預編譯頭
Ⅰ 預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 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++→分類里選擇「預編譯的頭文件」→選擇「不適用預補償頁眉」