神秘的构建错误"symbol(s) not found for i386" - openFrameworks 像素操作

Cryptic Build Error "symbol(s) not found for i386" - openFrameworks pixel manipulation

本文关键字:i386 found for 操作 像素 openFrameworks not 构建 错误 symbol      更新时间:2023-10-16

我对C++/oF创造性编码相对来说(大约1年(是新手。我在使用指针方面仍然不太稳定,但我已经有了基本的理解。我不确定我在这里使用指针是否是我问题的原因。

在这一点上,我试图用这个C代码作为模板写一个饱和度函数:C代码——改变颜色饱和度的函数

我的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;
 }

这看起来很简单,所以我很难理解为什么会发生这个错误。是不是我少了什么愚蠢的东西?

非常感谢。如果这个问题重复,我很抱歉,这个错误很神秘,我找不到任何相关的答案。

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

应该是

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

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