我用ATL按照例子编写了一个简单得COM程序。实现了一个IFun接口,里面有两个方法:
class ATL_NO_VTABLE CFun : 
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CFun, &CLSID_Fun>,
public IFun
{
//.........
STDMETHOD(Add)(LONG _1, LONG _2, ULONG* _out);
STDMETHOD(Mul)(LONG _1, LONG _2, LONG* _out);
//.........
};
ok.然后又建立了一个控制台程序
如下。#include "stdafx.h"
#include "ATLFirst.h"
#pragma comment( lib, "ATLFirst.lib" )
#include <objbase.h>int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize( NULL ); IFun* pFun = NULL;

ULONG lResult = 0;
CoCreateInstance( CLSID_Fun, NULL, CLSCTX_INPROC_SERVER, 
IID_IFun, ( void** )&pFun );
pFun->Add( 200, 300, &lResult );
pFun->Mul( 10, 20, ( LONG* )&lResult ); pFun->Release( );
CoUninitialize( );
return 0;
}可是为什么链接不过ATLCallTest.obj : error LNK2001: 无法解析的外部符号 _CLSID_Fun
ATLCallTest.obj : error LNK2001: 无法解析的外部符号 _IID_IFun
Debug/ATLCallTest.exe : fatal error LNK1120: 2 个无法解析的外部命令
------------------------
我明明有lib啊,而且DLL业注册过了。奇怪。

解决方案 »

  1.   

    我做了一下,, 没有问题, 会不会时没有import类型库,, 比如;:
    #import "../ATLSimple/_ATLSimple.tlb"
      

  2.   

    我使用的是C++阿〉
    .h和.lib,还需要倒入类型库马?
      

  3.   

    ATLCallTest.obj : error LNK2001: 无法解析的外部符号 _CLSID_Fun
    ATLCallTest.obj : error LNK2001: 无法解析的外部符号 _IID_IFun----------------------
    .c文件引进来了??????
    _CLSID_Fun,_IID_IFun的定义包含的.c文件中,或import .tlb
      

  4.   

    对,把那个.c文件中,class id和iid copy过来也行。
      

  5.   

    #include "..\ATLFirst.h"
    #include "..\ATLFirst_i.c"