有一个用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了,为什么还说没有呢
大侠们帮帮忙吧,谢谢了
想用一个应用程序调用它
在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了,为什么还说没有呢
大侠们帮帮忙吧,谢谢了
解决方案 »
- 请问如何添加serialport到工程文件夹
- 求助:动态数组
- 在线急等有关图片处理问题!!!!!
- 求助:如何在视图中得到CMainFrame中的CImageList成员?
- 请问有没有delphi接口文件转c++头文件的工具?
- 再问VC画直线问题,我是新手,大家包含
- 求window2003下服务(Service)程序中显示对话框的例子
- 问个界面设计的初级问题.
- [高手助我]在线等待,下午下班前结贴,关于向RichEdit中读入文件!
- 打算开个软件公司,各路兄弟请多给点建议,谢谢!(好点子多给分)
- 看个程序,关于映射模式MM_HIMETRIC和内存设备环境双缓冲画图
- 谁用过SOCKET的select I/O模型?我用的时候出问题了
const IID IID_IScenarioFile = {0x9E002FAD,0x7201,0x4BE6,{0x89,0xF3,0x48,0x5A,0x12,0xFB,0xE3,0x69}};
我把它加入了应用程序
这时候不报错了
但是我用pIScenarioFile去调用函数的时候pIScenarioFile->CloseFile();
编译没有错误,运行的时候报错
Unhandeled exception in dlltst.exe (Scenario File.dll):0xc0000005:Access violation
这是怎么回事啊
我快疯了,呜呜
把
#include "../COUNT_24/COUNT_24.h"
#include "../COUNT_24/COUNT_24_i.c"
加入app.h以后,出现下面的错误
aaDlg.obj : error LNK2005: _CLSID_COunt already defined in aa.obj
aaDlg.obj : error LNK2005: _LIBID_COUNT_24Lib already defined in aa.obj
aaDlg.obj : error LNK2005: _IID_ICOunt already defined in aa.obj
Debug/aa.exe : fatal error LNK1169: one or more multiply defined symbols found
这是怎么回事啊??
为什么人家例子就没问题(例子不是基于dialog的exe)
我快被整死了:(
一天什么都没弄出来
谁能给说一下具体的步骤,最好能有一个例子
我用的是基于对话框的exe编写的应用程序