我是 XS 的初学者,花了一些时间在网上寻找这个答案,但没有运气。问题是 XS 改变了函数的名称,当它编译时,我会得到一个未定义的引用错误。例如考虑下面的 XS 代码:
size_t
matrixIndex (colIndex, rowIndex,nCols,nRows)
size_t colIndex
size_t rowIndex
size_t nCols
size_t nRows
CODE:
size_t register i;
RETVAL = (rowIndex * nCols) + colIndex;
OUTPUT:
RETVAL
然后我尝试在下面的函数中使用它
int
matrixCopyColumnVector_dbl (colIndex,fromMatrix,nColsMatrix,nRowsMatrix,intoVector,nRowsVector)
size_t colIndex
SV * fromMatrix
size_t nColsMatrix
size_t nRowsMatrix
SV * intoVector
size_t nRowsVector
CODE:
size_t register x, n;
if( nRowsVector != nRowsMatrix) { RETVAL = 0; return RETVAL; }
n = 0;
for(x=0; x<= nRowsMatrix; x++) {
intoVector[n] = fromMatrix[matrixIndex /*USE OF FUNCTION HERE!!*/(colIndex,x,nColsMatrix,nRowsMatrix)];
n++;
}
RETVAL = 1;
return RETVAL;
OUTPUT:
RETVAL
然后我运行make
它并通过编译过程,我在似乎是链接阶段的undefined reference to 'matrixIndex'
.
所以我想知道从同一个 XS 文件中调用函数的标准 XS 方法是什么?