[英]header include in main.cpp works, but throws error in class
我在這里問過這個問題。 但是問題似乎是另外一回事,所以在這里重新發布。
我將main.cpp中Zbar庫的標頭<zbar.h>
包括在內,示例代碼工作得很好。
#include <iostream>
#include <Magick++.h>
#include <zbar.h>
#include <highgui.h>
#include <cv.h>
using namespace std;
using namespace zbar;
using namespace cv;
int main (int argc, char **argv){
if(argc < 2) return(1);
// create a reader
ImageScanner scanner;
// configure the reader
scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
// obtain image data
Magick::Image magick(argv[1]); // read an image file
int width = magick.columns(); // extract dimensions
int height = magick.rows();
Magick::Blob blob; // extract the raw data
magick.modifyImage();
magick.write(&blob, "GRAY", 8);
const void *raw = blob.data();
// wrap image data
Image image(width, height, "Y800", raw, width * height);
// scan the image for barcodes
int n = scanner.scan(image);
cv::Mat dispImage = imread(argv[1]);
// extract results
for(Image::SymbolIterator symbol = image.symbol_begin();
symbol != image.symbol_end();
++symbol) {
// do something useful with results
cout << "decoded " << symbol->get_type_name()
<< " symbol \"" << symbol->get_data() << '"' << endl;
}
}
// clean up
image.set_data(NULL, 0);
return(0);
}
但是,如果我創建了一個虛擬類並將zbar.h包含在此類的標題中,則會出現以下錯誤:
the default argument for parameter 0 of 'zbar::Exception::Exception(const void*)' has not yet been parsed line 144, external location: /usr/local/include/zbar/Exception.h C/C++ Problem
#ifndef DUMMY_H
#define DUMMY_H
#include <zbar.h>
class dummy{
public:
dummy();
};
#endif // DUMMY_H
我什至嘗試
extern "C"{
#include <zbar.h>
}
但它會引發100個template with C linkage
錯誤的template with C linkage
。
根據此文檔 ,構造函數聲明為
Exception(const void * = NULL);
該錯誤表明尚未聲明NULL
。 意味着<cstddef>
不包含任何<cstddef>
。 您應該能夠通過在邪惡的標頭之前包含您自己來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.