在VC6.0中使用COM失败
Vinc 2008-03-15 10:57:20 前几天在一个网站(http://blog.csdn.net/killer000777/archive/2007/09/21/1794941.aspx)上看到使用VB.NET调用迅雷下载COM的功能(使用ThunderAgent 1.0 Type Libary)的代码,参照一些网站上的说明我写了下面的代码.
代码如下:
// kjkjkjkDlg.cpp : implementation file
//
#include "stdafx.h"
#include "kjkjkjk.h"
#include "kjkjkjkDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#import "D:\\Program Files\\Thunder Network\\Thunder\\ComDlls\\ThunderAgent_Now.dll" no_namespace
//编译后在DEBUG目录下生成了ThunderAgent_Now.tlh和ThunderAgent_Now.tli文件
//已经将它们导入到工程中
//coclass Agent ID{1622f56a-0c55-464c-b472-377845def21d}
//interface IAgent ID{1adefb0d-0ffa-4470-8ab0-b921080f0642}
DEFINE_GUID(CLSID_Agent,0x1622f56a,0x0c55,0x464C,0xB4,0x72,0x37,0x78,0x45,0xDE,0xF2,0x1D);
DEFINE_GUID(IID_IAgent,0x1adefb0d,0x0ffa,0x4470,0x8a,0xb0,0xb9,0x21,0x08,0x0f,0x06,0x42);
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
//.......
//.......
void CKjkjkjkDlg::OnButton1()
{
// TODO: Add your control notification handler code here
IAgent* pAgent;
HRESULT hResult=CoInitialize(NULL);
if(hResult!=S_OK){
MessageBox("error in initialize com!");
PostQuitMessage(0);
}
else
{
hResult=CoCreateInstance(CLSID_Agent,
NULL,
CLSCTX_INPROC_SERVER,
IID_IAgent,
(void**)&pAgent);
if(hResult!=S_OK){
MessageBox("error in createinstance!");
PostQuitMessage(0);
}
else{
_bstr_t pInfoName("ThunderExists");
_bstr_t pResultInfo=pAgent->GetInfo(pInfoName);
MessageBox(pResultInfo);
CoUninitialize();
}
}
}
错误提示
--------------------Configuration: kjkjkjk - Win32 Debug--------------------
Linking...
kjkjkjkDlg.obj : error LNK2001: unresolved external symbol _CLSID_Agent
kjkjkjkDlg.obj : error LNK2001: unresolved external symbol _IID_IAgent
Debug/kjkjkjk.exe : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.
kjkjkjk.exe - 1 error(s), 0 warning(s)
请教各位大虾错误发生在哪里?
另:我查了很多使用现成COM的例子,他们在CoCreateInstance函数中的REFCLSID和REFIID都是直接使用.而不使用DEFINE_GUID宏.对于ThunderAgent 1.0 Type Libary这个COM,这两个参数能不能直接找到?