You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位环境下C++ DLL作为Excel函数运行异常求助

64位环境下C++ DLL导出函数供Excel VBA调用时参数传递异常

大家好,这是我的首次发帖。我最近一直在尝试跟着各类教程把C++ DLL编译成Excel可调用的函数,但折腾了好久都没成功,实在没办法了来求助大家。

我的环境配置:

  • Windows 10 64位系统
  • Visual Studio Community 2017
  • Excel 2016 64位版本

我已经完成的操作步骤:

  1. 通过VS的「Windows Desktop Wizard」新建了一个空的DLL项目
  2. 项目的「Source Files」文件夹下只有两个文件:
    • funct.cpp:
      double __stdcall squareFxn(double x) { return x * x; }
      
    • defFile.def:
      LIBRARY "square"
      EXPORTS squareFxn
      
  3. 项目属性配置:
    • 在配置管理器中将平台设置为x64
    • 在链接器/输入/模块定义文件中添加了defFile.def
  4. 编译完成后,我在Excel的VBA编辑器里写了函数声明:
    Declare PtrSafe Function squareFxn Lib "C:\MyPath\square.dll" (ByVal x As Double) As Double
    

遇到的问题:

  • 当我在VS中调试,然后在Excel单元格输入=squareFxn(5)时,VS里显示参数x是一个极小值(6.234E-310),函数最终返回0,完全不符合预期
  • 我尝试改成引用传递:把C++函数改成double __stdcall squareFxn(double &x),同时VBA声明里改成ByRef x As Double,结果直接出现读访问错误
  • 我已经试过以管理员身份运行Excel,但问题还是没解决

请问有人知道问题出在哪吗?恳请各位大佬提供帮助!

内容的提问来源于stack exchange,提问作者Mark L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:33:45