我编写了一个 Excel 可以使用的 dll 文件,但是我的电子表格在某些情况下会崩溃。如果有人可以帮助我,我将不胜感激。
我正在使用的 C++ 代码如下:(主要是从 C++ 包 QuantLib 借来的)
long __stdcall nextBusinessDay_C(long todaySerial) {
Date today(todaySerial);
UnitedStates us(UnitedStates::NYSE);
return (long)(us.advance(today,1,Days).serialNumber());
}
在 Excel 中,我有以下 VBA 代码
Declare Function yz_nextBusinessDayUS_NYSE_C Lib _
"c:\lib\myExcelFile.dll" _
(ByVal ds As Long) As Long
Function nextBizDayUS(d As Date) As Date
nextBizDayUS = nextBusinessDayUS_C(CLng(d))
End Function
现在,在 Excel 中,如果我只使用:
//This works perfectly fine
A1: 1/1/2013 B1: =nextBizDayUS(A1)
A2: 1/2/2013 B2: =nextBizDayUS(A2)
A3: 1/2/2013 B3: =nextBizDayUS(A3)
... ...
我可以像这样继续写几千行,没有任何问题。但是,如果我使用一个函数的输出作为另一个函数的输入,每次按下 Ctrl+Alt+F9 时,我的 Excel 都会崩溃:
//This crashes every time when I hit Ctrl+Alt+F9!!!
A1: 1/1/2013
A2: =nextBizDayUS(A1)
A3: =nextBizDayUS(A2)
在我的 C++ 库中使用的源代码与 QuantLib 包完全相同(我只是想学习这个包,而不是推销我自己的代码)代码使用的唯一花哨的东西是 boost::shared_ptr<>。
我为此困扰了很多天。希望有人可以帮助我。
提前致谢。