在OpenCVCL的开发过程中,发现了一个问题:
同样的kernel,在test目录下的 ../test/test_moments.cpp调用是没有问题的,但是在perf目录下的 ../perf/perf_moments.cpp是有问题的,build之后,运行时报段错误。这个是什么问题造成的,
解决办法:
perf目录下的main函数如下:
77 int main(int argc, char **argv)
78 {
79 std::vector<cv::ocl::Info> oclinfo;
80 TS::ptr()->init("ocl");
81 InitGoogleTest(&argc, argv);
82
83 print_info();
84 int devnums = getDevice(oclinfo);
85 if(devnums < 1)
86
87 {
88
89 std::cout << "no device found\n";
90
91 return -1;
92
93 }
94 //if you want to use undefault device, set it here
95 //setDevice(oclinfo[0]);
96 //setBinpath(CLBINPATH);
97 return RUN_ALL_TESTS();
98 }
1、把红色代码注释掉,据咨询是保存kernel运行时字符串的缓存使用的。
2、重新把build 目录去掉,重新建文件夹build-->cmake -->make >运行 。即可解决问题!