Com应用程序QueryInterface()函数出现问题,
有一个用com方式编写的dll
想用一个应用程序调用它
在dll程序中
Scenario File.idl文件里有这样的声名
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(9E002FAD-7201-4BE6-89F3-485A12FBE369),
dual,
helpstring("IScenarioFile Interface"),
pointer_default(unique)
]
interface IScenarioFile : IDispatch
{
……
[id(9), helpstring("method CloseFile")] HRESULT CloseFile();
……
};
在Scenario File.h文件里,有这样一句话
EXTERN_C const IID IID_IScenarioFile;
在应用程序里,我写了如下测试代码
IUnknown *pUnknown;
IScenarioFile *pIScenarioFile;
HRESULT hResult;
if(CoInitialize(NULL)!=S_OK)
{
MessageBox("Initialize COM library failed!");
return -1;
}
GUID ScenarioCLSID;
hResult = ::CLSIDFromProgID(L"ScenarioFile.ScenarioFile",&ScenarioCLSID);
if(hResult!=S_OK)
{
MessageBox("Can't find the ScenarioFile CLSID!");
return -2;
}
hResult = CoCreateInstance(ScenarioCLSID,NULL,CLSCTX_INPROC_SERVER,IID_IUnknown,(void **)&pUnknown);
if(hResult!=S_OK)
{
MessageBox("Create object failed!");
return -2;
}
hResult = pUnknown->QueryInterface(IID_IScenarioFile,(void **)&pIScenarioFile);
前面的初始化和createinstance都没有问题,但是到了执行QueryInterface()的时候,出现了连接错误
unresolved external symbol _IID_IScenarioFile
在Scenario File.h文件里明明说明了这个IID的啊,而且我也include了,为什么还说没有呢
大侠们帮帮忙吧,谢谢了