ATL错误编译64位COM excel插件

时间:2013-04-05 06:28:48

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

我有一个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部分。

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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解决了这个问题。