#import "../ATLMFC/Debug/ATLMFC.dll" no_namespace
void Fun()
{
CoInitialize(NULL);
HRESULT hr;
IUnknown *pUnKnown=NULL;
ISimple *pSimple=NULL; CLSID clsid;
hr=CLSIDFromProgID(L"ATLMFC.Simple",&clsid);
hr=CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IUnknown,(void **)&pUnKnown); hr=pUnKnown->QueryInterface(_uuidof(ISimple),(void **)&pSimple); //此处接口查询成功
if (SUCCEEDED(hr))
{
int num=0;
pSimple->Add(10,20,&num); //此处报错,报错如下
std::cout<<num<<std::endl;
pSimple->Release();
}
}error C2660: 'Add' : function does not take 3 parameters
我的COM服务器中Add函数明明是3个参数(整数的加法),为什么报这种错???
如果是的话,会当做返回值的
#include "../ATLMFC/ATLMFC.h"
#include "../ATLMFC/ATLMFC_i.c"
请问这是什么原因???
这个问题我遇到好几次
#import "组件所在目录myCom.dll" no_namespace
或
#import "类型库所在目录myCom.tlb"
using namespace MYCOM; //为什么这里报错error C2871: 'MYCOM' : does not exist or is not a namespace
默认import导出接口是有封装的,想要纯的要raw_interfaces_only
#import "../ATLMFC/Debug/ATLMFC.dll" no_namespace raw_interfaces_only 学C++,永远要学好怎么查资料
可以参考
http://msdn.microsoft.com/en-us/library/8etzzkb6(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/298h7faa(v=vs.80).aspx