Android NDK Thread无效使用非静态成员函数

时间:2016-07-19 17:26:04

标签: android c++ multithreading opencv android-ndk

我需要在我的Android应用程序中使用线程,因为我正在使用本机opencv进行图像处理。这是我的代码:

void Detector::processBinary(Mat &binary) {
    //do stuff
}

void Detector::Detect() {
   ...
   thread t1(processBinary, binary);
   t1.join();
}

然而,我得到错误"无效使用非静态成员函数"每当我尝试运行应用程序时,从线程t1(processBinary,二进制)。然而,这条线在视觉工作室中完美运行。谁能帮我这个?提前致谢!

1 个答案:

答案 0 :(得分:1)

使用成员函数,需要this参数(必须在某个对象上调用它)。有两种选择:

使用静态类函数(或非类函数):

void processBinary(Mat &binary) {
    //do stuff
}

void Detector::Detect() {
   ...
   thread t1(processBinary, binary);
   t1.join();
}

如果我们想要利用成员函数,或者传递适当的参数:

void Detector::processBinary(Mat &binary) {
    //do stuff
}

void Detector::Detect() {
   ...
   thread t1(&Detector::processBinary, *this, binary);
   t1.join();
}