链接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程互操作性