У меня есть эта проблема при создании Opencl Caffe с Matlab.
«D: \ Projects \ shawkat \ caffe-opencl \ caffe-opencl \ build \ ALL_BUILD.vcxproj» (цель по умолчанию) (1) ->
«D: \ Projects \ shawkat \ caffe-opencl \ caffe-opencl \ build \ Matlab \ matlab.vcxproj» (цель по умолчанию) (25) ->
(Цель ClCompile) ->
D: \ Projects \ shawkat \ caffe-opencl \ caffe-opencl \ matlab + caffe \ private \ caffe_.cpp (285): ошибка C2664: ‘caffe :: Net:
: Net (const caffe :: Net &) ‘: невозможно преобразовать аргумент 1 из’ char * ‘в’ const caffe :: NetParameter &'[D: \ Проекты
\ Shawkat \ кофейная-OpenCL \ кофейная-OpenCL \ сборка \ Matlab \ matlab.vcxproj
проблема в функции get_net в файле caffe_.cpp
вот эта функция из файла
// Usage: caffe_('get_net', model_file, phase_name)
static void get_net(MEX_ARGS) {
mxCHECK(nrhs == 2 && mxIsChar(prhs[0]) && mxIsChar(prhs[1]),
"Usage: caffe_('get_net', model_file, phase_name)");
char* model_file = mxArrayToString(prhs[0]);
char* phase_name = mxArrayToString(prhs[1]);
mxCHECK_FILE_EXIST(model_file);
Phase phase;
if (strcmp(phase_name, "train") == 0) {
phase = TRAIN;
} else if (strcmp(phase_name, "test") == 0) {
phase = TEST;
} else {
mxERROR("Unknown phase");
}
shared_ptr<Net<float> > net(new caffe::Net<float>(model_file, phase));
nets_.push_back(net);
plhs[0] = ptr_to_handle<Net<float> >(net.get());
mxFree(model_file);
mxFree(phase_name);
}
решается добавлением NULL в качестве третьего входа в функцию следующим образом
shared_ptr> net (новый caffe :: Net (model_file, phase, NULL));
Других решений пока нет …