我在Excel中有一个VBA宏,它调用用C ++编写的DLL。此DLL中的函数将一个数组返回给宏,然后将其放入Excel工作表中。
VBA宏:
Private Declare Function arrayTestEXL Lib "C:\Path\To\Lib\calcDLL.dll" (ByRef testArray As Double) As Long
Sub testArrayTest()
Dim testArray(0, 9) As Double
Dim rngResults As Range
Dim errorCode As Integer
errorCode = arrayTestEXL(testArray(0, 0))
Set rngResults = Range(Cells(4, 4), Cells(4, 13))
rngResults.Value = testArray
End Sub
C ++代码是:
int _stdcall arrayTest(double* testArray)
{
for (int i = 0; i < 10; i++)
testArray[i] = i;
return 0;
}
这很有效。现在我想从C ++函数中改变数组的大小。
如果我添加:
testArray = (double*) malloc(10 * sizeof(double))
对于函数(显然在循环之前),突然所有值都变为0,因为它们被放入Excel中。