【问题标题】:ATL errors compiling 64-bit COM excel addin编译 64 位 COM excel 插件的 ATL 错误
【发布时间】:2015-01-09 11:30:37
【问题描述】:

我添加了一个 C++ ATL COM,它实现了一些引用 Excel API 的实用函数:

void DoSomething(CComPtr<Excel::Range> &masterCell)
{
    // ...
    CComPtr<Excel::Range> cell = masterCell->Offset[vertical][horizontal];
    // ...
}

在为 x64 编译 excel 插件时,我遇到了很多虚假错误,例如:

cannot convert from 'Excel::Range' to 'ATL::CComPtr<T>'

但是,当我为 Win32 编译时没有问题。辅助实用程序函数没有作为 excel UDF 公开,所以我认为 this question 不适用,因为该函数没有 STDMETHODIMP 部分。

有什么想法吗?

提前致谢。

【问题讨论】:

  • Excel::Range 来自以下语句:#import "Excel.tlb" named_guids auto_rename ... and ... using namespace Excel;此版本的 Excel.tlb 是从 32 位版本的 Excel 生成的。我需要生成一个 64 位的吗?

标签: visual-c++ com excel-2010 atl


【解决方案1】:

CComPtr 接受接口作为模板参数,而Range 是分配接口。你需要CComPtr&lt;Excel::IRange&gt;

【讨论】:

    【解决方案2】:

    哇!原来我试图在 64 位版本中引用 32 位 excel 安装:

    https://social.msdn.microsoft.com/Forums/en-US/f069ea06-b888-47c0-9ec8-c6cf8a59d9b1/atl-errors-compiling-64bit-com-excel-addin?forum=exceldev

    安装 64 位 excel 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 2014-01-12
      • 2012-07-30
      • 2016-11-15
      • 1970-01-01
      • 2021-08-09
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多