0

我有一个 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 公开,所以我认为这个问题不适用,因为该函数没有STDMETHODIMP一部分。

有任何想法吗?

提前致谢。

4

2 回答 2

2

CComPtr接受一个接口作为模板参数,而Rangeis dispinterface。你需要CComPtr<Excel::IRange>

于 2013-04-08T21:47:57.060 回答
0

嗬!原来我试图在 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 解决了这个问题。

于 2015-01-09T03:30:37.793 回答