不能将参数1从'char *'转换为'const caffe :: NetParameter

时间:2017-07-20 00:21:23

标签: c++ matlab caffe mex matcaffe

使用matlab构建opencl caffe时遇到此问题。

  

“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:\项目   \肖卡特\ CAFFE-的OpenCL \ CAFFE-的OpenCL \构建\ Matlab的\ matlab.vcxproj

问题在于文件caffe_.cpp中的函数get_net 这是文件中的这个函数

// 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);
}

1 个答案:

答案 0 :(得分:1)

通过添加NULL作为函数的第三个输入来解决,如下所示   shared_ptr&gt; net(new caffe :: Net(model_file,phase,NULL));