Excel链接C+时出错+;:&引用;公式中使用的值的数据类型错误; 我写了一个简单的C++程序< /p>
Source.cpp:Excel链接C+时出错+;:&引用;公式中使用的值的数据类型错误; 我写了一个简单的C++程序< /p>,c++,excel,dll,x86-64,32bit-64bit,C++,Excel,Dll,X86 64,32bit 64bit,Source.cpp: double __stdcall square(double& x) { return x*x; } Define.def: LIBRARY "square" EXPORTS square 然后在my.xlsm文件模块中,添加了模块1导入: 声明PtrSafe函数平方_ Lib“C:\Users\user\Documents\AthosCode\Marek Kolman Square\Square\Debug\Square.dll”_ (ByRef
double __stdcall square(double& x)
{
return x*x;
}
Define.def:
LIBRARY "square"
EXPORTS
square
然后在my.xlsm文件模块中,添加了模块1导入:
声明PtrSafe函数平方_
Lib“C:\Users\user\Documents\AthosCode\Marek Kolman Square\Square\Debug\Square.dll”_
(ByRef x为双精度)为双精度
在活页1中,将10
放在A1中,将=正方形(A1)
放在B1中
错误为:“公式中使用的值的数据类型错误”
有什么问题,我该如何解决
我的环境是
- Windows 7 64位
- Visual Studio 2016社区(因此它是32位的)
- Excel 2016 64位
回复注释时,如果我将passing by reference更改为passing by value,则错误是相同的 我将Source.cpp更改为
double __stdcall square(double x)
{
return x*x;
}
并将模块1更改为
声明PtrSafe函数平方_
Lib“C:\Users\user\Documents\AthosCode\Marek Kolman Square\Square\Debug\Square.dll”_
(ByVal x为双精度)为双精度
同样的错误。由于架构上的差异,不可能做到这一点,反之亦然 可以这样做,但除非您有没有64位版本的旧式DLL,否则您应该编译为64位项目。因此,您需要一个64位DLL