main中的标头包含.cpp有效,但在类中抛出错误

header include in main.cpp works, but throws error in class

本文关键字:出错 错误 有效 包含 cpp main      更新时间:2023-10-16

我在这里问过这个问题。但问题似乎是其他东西,所以在这里重新发布..

我在main中包含来自Zbar库的标头<zbar.h>.cpp示例代码运行良好。

#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错误。

根据此文档,构造函数声明为

Exception(const void * = NULL);

该错误表明尚未声明NULL;这意味着没有包含<cstddef>。您应该能够通过在邪恶标头之前包含自己来修复它。

相关文章: