我需要编译code.cpp(代码为here),但是在mex -code.cpp时收到以下消息:
printIsAllowed ? print(items) : return
我不太了解mex,并且大多数将cpp与Rcpp一起使用。我确定它与我在mexFunction中定义变量的方式有关,但是试图进行更改并且它无法以任何方式工作。 linNest函数很好用,因为它来自R包。
感谢您的帮助!
答案 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);
这使类型匹配。
我已经看过代码,linNest
将index
指针转发到linSolver
,该函数根本不使用指针。也就是说,您的代码中未使用index
。我不知道这是错误还是故意的,但是由于未使用它,因此进行上述更改当然不会很危险。您也可以将index
替换为nullptr
。