我正在用C编写一个64位Dll,然后在Excel 64位中使用它,并且我正在从https://sites.google.com/site/jrlhost/links/excelcdll跟踪一个示例项目。
这个例子很简单。我们在C中编写了一个函数,该函数将返回输入的平方值。该函数在DLL中导出,然后在Excel 64位中使用。
我正面临与示例完全相同的问题:
“但是,当您将squareForEXL用作工作表函数时,会导致错误。在我的桌面上,它会返回正确的结果(例如,“ = squareForEXL(10)”会产生100),但会出现“堆栈空间不足”错误,无论是在调用函数时还是在关闭Excel的某个时候。在我的笔记本电脑上,它返回的结果都不正确(例如,“ = squareForEXL(10)”的结果为0)。在这两种情况下,Excel有时都会崩溃。
C函数(squareForEXL)在VBA中使用时可以正常工作,但不能作为工作表函数使用。本文中提出了一种解决方法,但我仍然想看看是否有任何直接解决此问题的方法。
下面是C和VBA代码:
double _stdcall squareForEXL (double *x)
{
return *x * *x;
}
Declare PtrSafe Function squareForEXL Lib "C:\Working\XLSquare\x64\Debug\XLSquare.dll" (ByRef x As Double) As Double
您需要传递对示例中给定的squareForExl的引用。那是你需要的
double _stdcall squareForEXL (double &x)
{
return x * x;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句