未定义的符号

时间:2010-02-02 00:55:38

标签: c++ undefined

Image类是BMP类的子类。我试图从BMP类中使用一些方法TellHeight(),TellWidth()等来操作此方法中的图像。但是,当我创建一个BMP并尝试在其上调用函数时,在编译时我得到一个错误说

  

未定义的符号:

     

BMP :: BMP(),引自:   图像:: invertcolors()

这是方法invertcolors():

void Image::invertcolors()
{
BMP img_invert;
img_invert.ReadFromFile("inverted.bmp");
//int height =img_invert.TellHeight();
//int width = img_invert.TellWidth();

//for(int i = 0; i<height; i++)
//{
//for(int j =0; j<width; j++)
//{
//RGBApixel* current = img_invert(j,i);
//current->Blue = 255 - (current->Blue);
//current->Green = 255 - (current->Green);
//current->Red = 255 - (current->Red);
//current->Alpha = 255 - (current->Alpha);
//}
//}
}

4 个答案:

答案 0 :(得分:2)

未定义的符号是链接时间错误。链接二进制文件时,需要链接定义该函数的已编译代码。

如果BMP是外部库的一部分,您需要在链接行中添加以下内容:

 -L/path/to/lib -lbmp

答案 1 :(得分:1)

BMP没有无参数构造函数,您必须使用其他方法来获取要使用的BMP实例。

答案 2 :(得分:1)

您的BMP类没有默认构造函数。要么实现一个,要么正确地调用Image的父级初始化程序。例如,

// this class does not have a default constructor:
class Parent 
{
public:
   Parent( int a ) { /* .. */ }
};


// so this one must call its parent's constructor with a parameter
class Child : public Parent
{
public:
   Child() : Parent(42) { /* .. */ } 
}

答案 3 :(得分:0)

看起来更像是链接器错误。

中没有链接BMP库