我很难找到一个线程来处理OpenCV。问题在于我代码中的ThreadStart()部分。
public ref class circles
{
public:
static void circleFind(bool isPhoto, const char * windowName1, const char * windowName2, const char * photoName)
{(stuff)}
};
int main(int argc, char* argv[])
{
const char *windowName1;
const char *windowName2;
const char *photoName;
windowName1 = "Find Circles";
windowName2 = "Gray";
photoName = "Colonies 3.jpg";
bool isPhoto = false;
//circles(isPhoto, windowName1, windowName2, photoName);
Thread^ circleThread = gcnew Thread(
gcnew ThreadStart (&circles::circleFind(isPhoto, windowName1, windowName2, photoName) ));
circleThread->Start();
area(isPhoto, photoName);
return 0;
}这不是所有的代码,而是重要的部分。我所犯的错误是:
1>..............\Program文件(X86)\OpenCV\samples\c\循环dection.cpp(130):错误C2102:'&‘要求l-值 1>..............\Program文件(X86)\OpenCV\dection.cpp\c\循环dection.cpp(130):错误C3350:'System::Threading::ThreadStart‘:委托构造函数需要2个参数(S)
发布于 2009-10-25 18:28:14
这里的问题是,您试图为具有不兼容签名的ThreadStart委托使用一个函数。ThreadStart是一个委托,它没有参数,也不返回值。不过,您正在尝试使用一种使用4个参数的方法。这不管用。
您需要传递一个不带参数的方法。
要在C++中传递参数,最好的方法是创建一个将所有参数都作为字段的新类。然后给它一个没有参数且不返回值的方法,并使用它作为ThreadStart目标。
ThreadHelper^ h = gcnew ThreadHelper();
h->Param1 = someValue;
ThreadStart^ threadDelegate = gcnew ThreadStart( h, &ThreadHelper::DoMoreWork );在ThreadStart文档页面中有一个完整的示例。
https://stackoverflow.com/questions/1621629
复制相似问题