在C ++中更改大小vba数组

时间:2016-01-06 10:31:02

标签: c++ arrays vba excel-vba excel

我在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中。

0 个答案:

没有答案