使用MEX编译C ++文件

时间:2018-10-09 21:35:11

标签: c++ matlab mex

我需要编译code.cpp(代码为here),但是在mex -code.cpp时收到以下消息:

printIsAllowed ? print(items) : return

我不太了解mex,并且大多数将cpp与Rcpp一起使用。我确定它与我在mexFunction中定义变量的方式有关,但是试图进行更改并且它无法以任何方式工作。 linNest函数很好用,因为它来自R包。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

该错误消息告诉您“候选函数不可行:第三个参数没有从'int'到'int *'的已知转换;使用&作为参数的地址”。您绝对应该尝试这样做,更改当前行:

linNest(X, y, index, nrow, ncol, numGroup, rangeGroupInd, groupLen, lambda1, lambda2, beta, innerIter, outerIter, thresh, outerThresh, eta, gamma, betaIsZero, step, reset);

收件人:

linNest(X, y, &index, nrow, ncol, numGroup, rangeGroupInd, groupLen, lambda1, lambda2, beta, innerIter, outerIter, thresh, outerThresh, eta, gamma, betaIsZero, step, reset);

这使类型匹配。

我已经看过代码,linNestindex指针转发到linSolver,该函数根本不使用指针。也就是说,您的代码中未使用index。我不知道这是错误还是故意的,但是由于未使用它,因此进行上述更改当然不会很危险。您也可以将index替换为nullptr