Visual c++ 编译64位COM excel加载项时发生ATL错误 我有一个C++ ATL COM添加,它实现了一些引用Excel API的实用函数: void DoSomething(CComPtr<Excel::Range> &masterCell) { // ... CComPtr<Excel::Range> cell = masterCell->Offset[vertical][horizontal]; // ... } void DoSomething(CComPtr&masterCell) { // ... CComPtr单元=主单元->偏移量[垂直][水平]; // ... }

Visual c++ 编译64位COM excel加载项时发生ATL错误 我有一个C++ ATL COM添加,它实现了一些引用Excel API的实用函数: void DoSomething(CComPtr<Excel::Range> &masterCell) { // ... CComPtr<Excel::Range> cell = masterCell->Offset[vertical][horizontal]; // ... } void DoSomething(CComPtr&masterCell) { // ... CComPtr单元=主单元->偏移量[垂直][水平]; // ... },visual-c++,com,excel-2010,atl,Visual C++,Com,Excel 2010,Atl,为x64编译excel加载项时,我会遇到许多错误,例如: cannot convert from 'Excel::Range' to 'ATL::CComPtr<T>' 无法从“Excel::Range”转换为“ATL::CComPtr” 但是,当我为Win32编译时,没有问题。helper实用程序函数未公开为excel UDF,因此我认为不适用,因为该函数没有STDMETHODIMP部分 有什么想法吗 提前谢谢 CComPtr接受一个接口作为模板参数,而Range是dispin

为x64编译excel加载项时,我会遇到许多错误,例如:

cannot convert from 'Excel::Range' to 'ATL::CComPtr<T>'
无法从“Excel::Range”转换为“ATL::CComPtr”
但是,当我为Win32编译时,没有问题。helper实用程序函数未公开为excel UDF,因此我认为不适用,因为该函数没有
STDMETHODIMP
部分

有什么想法吗


提前谢谢

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

Doh!事实证明,我试图引用64位版本中的32位excel安装:


安装64位excel解决了此问题。

excel::Range来自以下语句:#导入名为_guidsauto_rename的“excel.tlb”_guidsauto_rename。。。而且。。。使用名称空间Excel;此版本的Excel.tlb是从32位版本的Excel生成的。我需要生成一个64位的吗?