隐藏构建错误“找不到i386的符号” - openFrameworks像素操作

时间:2015-09-21 20:24:02

标签: c++ pointers openframeworks

我相对(〜1年)新的C ++ / oF创意编码。我在使用指针时仍然不稳定,但我有一个基本的了解。我不确定我在这里使用指针是否是我问题的原因。

此时,我正在尝试使用此C代码作为模板编写饱和度函数:C Code — Function To Change Color Saturation

我的saturate()函数是自定义类“LoVid”中的私有函数。 在下面的代码中,我只是尝试对饱和度函数进行简单测试。

在链接器出错之前我没有出现构建错误。

以下是相关代码:

LoVid.h:

class LoVid { ...
  private:
  void saturate(float *_r, float *_g, float *_b, float amt);
}

LoVid.cpp:

LoVid::LoVid(string _path){ ...
  //saturation test:
  unsigned char oR = 122;
  unsigned char oG = 122;
  unsigned char oB = 122;

  float r = (float)oR;
  float g = (float)oG;
  float b = (float)oB;

  cout << "pre r,g,b: " << r << ", " << g << ", " << b << endl;
  saturate(&r, &g, &b, 2.0);
  cout << "sat r,g,b: " << r << ", " << g << ", " << b << endl;
 }

...

void saturate(float *_r, float *_g, float *_b, float amt){

   //conversion constants
   const float Pr = 0.299;
   const float Pg = 0.587;
   const float Pb = 0.114;

   float p = sqrt((*_r)*(*_r)*Pr + (*_g)*(*_g)*Pg + (*_b)*(*_b)*Pb);
   *_r = p + ((*_r)-p) * amt;
   *_g = p + ((*_g)-p) * amt;
   *_b = p + ((*_b)-p) * amt;

 }

这看起来很简单,所以我正在摸不着为什么会发生这种错误。我有什么东西是愚蠢的吗?

非常感谢。抱歉,如果这个问题是重复的,那么错误就足够神秘,我找不到相关的答案。

1 个答案:

答案 0 :(得分:1)

void saturate(float *_r, float *_g, float *_b, float amt)

应该是

void LoVid::saturate(float *_r, float *_g, float *_b, float amt)

否则,您只是定义全局函数saturate而不是成员。