神秘构建错误 "symbol(s) not found for i386" - openFrameworks 像素操作
Cryptic Build Error "symbol(s) not found for i386" - openFrameworks pixel manipulation
我对 C++/oF 创意编码比较陌生(约 1 年)。我对使用指针仍然犹豫不决,但我有一个基本的了解。我不确定我在这里使用指针是否是问题的原因。
此时,我正在尝试使用此 C 代码作为模板编写饱和函数:C Code — Function To Change Color Saturation
我的 saturate() 函数是自定义 class "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
而不是成员函数。
我对 C++/oF 创意编码比较陌生(约 1 年)。我对使用指针仍然犹豫不决,但我有一个基本的了解。我不确定我在这里使用指针是否是问题的原因。
此时,我正在尝试使用此 C 代码作为模板编写饱和函数:C Code — Function To Change Color Saturation
我的 saturate() 函数是自定义 class "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
而不是成员函数。