链接C ++的Excel错误:“公式中使用的值是错误的数据types”

我写了一个简单的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中,在B1中放入=square(A1)

错误说:“公式中使用的值是错误的数据types”。

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

我的环境是 – 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 

同样的错误。

由于体系结构的差异, 在64位进程中加载​​32位DLL是不可能的,反之亦然

可以从64位代码访问32位DLL,除非您有没有64位版本的传统DLL,否则应该编译为64位项目。 而64位Office根本不支持32位插件,所以你需要一个64位的DLL。

  • 我可以在Windows上加载一个32位DLL到64位进程吗?
  • stream程互操作性