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

标签 c++ pointers openframeworks

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

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

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

在链接器错误之前,我没有得到任何构建错误。

相关代码如下:

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 而不是成员函数。

关于c++ - 神秘构建错误 "symbol(s) not found for i386"- openFrameworks 像素操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703951/

相关文章:

c++ - 是否可以直接从队列成员函数访问一对成员变量?

c++ - 多线程事务和锁定

processing - openFrameworks 与处理

java - 将字符串从 Activity 传递到库类

opencv - Openframeworks 上图像处理的类型差异

c++ - TortoiseSVN 和 Visual Studio Express 2010

c# - 如何正确循环并打印 Int、Long、Float 或 BigInteger 的位?

C - 将指针传递给函数,然后将函数内部的相同指针传递给另一个函数

c++ - 带有对象指针的运算符函数

c++ - 在客户的计算机上搜索特定文件