链接C ++的Excel错误:"公式中使用的值是错误的数据类型"

时间:2016-08-24 03:13:08

标签: c++ excel

我写了一个简单的C ++程序

Source.cpp:

double __stdcall square(double& x)
{
    return x*x;
}

Define.def:

LIBRARY "square" 
EXPORTS
square

然后在我的.xlsm文件模块中,添加了module1 imporing:

Declare PtrSafe Function square _
Lib "C:\Users\user\Documents\AthosCode\Marek Kolman Square\Square\Debug\square.dll" _
(ByRef x As Double) As Double

并在Sheet1中,将10放在A1中,将=square(A1)放在B1中。

错误说:"公式中使用的值是错误的数据类型"。

问题是什么,我该如何解决?

我的环境是 - Windows 7 64位 - Visual Studio 2016社区(所以它是32位) - Excel 2016 64位

回复评论,如果我通过引用传递值来改变传递,则错误是相同的。

我将Source.cpp更改为

double __stdcall square(double x)
{
    return x*x;
}

并将module1更改为

Declare PtrSafe Function square _
Lib "C:\Users\user\Documents\AthosCode\Marek Kolman Square\Square\Debug\square.dll" _
(ByVal x As Double) As Double

同样的错误。

1 个答案:

答案 0 :(得分:1)

由于架构不同,load a 32-bit DLL in a 64-bit process不可能,反之亦然

可能access 32-bit DLLs from 64-bit code但除非您有没有64位版本的旧DLL,否则应该编译为64位项目。并64-bit Office doesn't support 32-bit plugin at all所以你需要一个64位的DLL。