今天拿到厂商的SDK,是用COM组件形式开发的,我在编译时老得到LNK2001错误, 请问该怎么解决?
void main()
{
     CoInitialize(NULL);
     ICUIExternal6 * pExt = NULL;
     CLSID   clsid;
     CLSIDFromProgID(L"IgfxExt.CUIExternal", &clsid);     HRESULT hr = CoCreateInstance(clsid,NULL,CLSCTX_SERVER,
                         IID_ICUIExternal6,(void **)&pExt);
     if (FAILED(hr))
     {
return;
     }
}
SDK中只提供了两个头文件,一个.c文件,谁能解决?

解决方案 »

  1.   

    补充:
    错误如下:
    1>CRTDlg.obj : error LNK2001: unresolved external symbol _IID_ICUIExternal6
    1>E:\Projectx\CRT\Debug\CRT.exe : fatal error LNK1120: 1 unresolved externals
      

  2.   

    to guo_wei():
    ======================
    没有.lib提供给我,就是这样才麻烦啊
    多谢回复!
      

  3.   

    头文件里应该有IID_ICUIExternal6的定义。
    没有的话,向厂商说。
      

  4.   

    1、缺少lib文件
    2、你没有把定义的文件加入工程
      

  5.   

    COM组件注册了吗?
    -----------------
    注册了,已经注册成功头文件里应该有IID_ICUIExternal6的定义。
    没有的话,向厂商说。
    ------------------------------------
    头文件里面是有定义,厂商是Intel, 开发包肯定没问题,他们都给别人用好多次的
    再说给他们寄一个mail,要好几天才回复,来不及了1、缺少lib文件
    2、你没有把定义的文件加入工程
    --------------------------------------------------------------------
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1653899&SiteID=1
    我在上面这个网站看到一个人说到要把<appropriatefilename>_i.c 加到Link中去, 我的开发包是有一个IgfxExt_i.c文件,但不直到怎么加进去,我用的是vc2005,麻烦知情人告之。
    感谢回复
      

  6.   

    1.com形式提供的可以没有lib文件。
    2.注册这个com
    3.然后添加引用里面有个com,找到你的那个com文件这样就可以把那个头文件包含进来了。祝你好运
      

  7.   

    IgfxExt_i.c
    把这个.c文件拷贝到你的工作目录,然后选择添加现有项,找到这个文件,添加。
      

  8.   

    多谢shanhqk(山)你的意思是把这个c文件直接添加到工程就可以吗?
    我把它加进去了,不过有一个编译错误,MIDL_DEFINE_GUID重定义错误
    然后我就不知道怎么办了
    多谢可不可以说的详细点?
      

  9.   

    还有:
    下面这句话是什么意思?引用在什么地方?
    3.然后添加引用里面有个com,找到你的那个com文件这样就可以把那个头文件包含进来了。
    多谢
      

  10.   

    头文件里面是有定义,厂商是Intel, 开发包肯定没问题,他们都给别人用好多次的--有定义了,怎么还会有lnk2001错误?
      

  11.   

    回楼上:
    开发包是以COM形式提供的不是(h + lib + dll)形式的
    即使是这种形式的如果有定义,但没有.lib还是会出现错误(LNK2001)
    现在什么东西都有,只是我不会把它们都添加到工程中而已。
      

  12.   

    #import "your com packet"
      

  13.   

    #import "your com packet"----------------------------
    我将下面这句话添加进去
    #import "IgfxExt_i.c"
    得到错误:
    1>e:\projectx\crt\crtdlg.h(8) : fatal error C1083: Cannot open type library file: 'e:\projectx\crt\igfxext_i.c': Error loading type library/DLL.如果添加#import "IgfxExt.idl"
    提示找不到文件或目录
      

  14.   

    头文件里,IID_ICUIExternal6是怎么定义的?
      

  15.   

    只要#import你的组件的dll即可
    给你个#import ado 的例子
    #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
       no_namespace rename("EOF", "EndOfFile")
      

  16.   

    崩溃, 还是那个LNK2001错误
    我把工程打成包,谁帮我编译下试试?
    要的发下mail
      

  17.   

    [email protected]给我发过来,我帮你看看
      

  18.   

    多谢,了解我在Visual C++ 6.0中改动这个选项也能编译通过
    不知道这个选项是做什么用的
    反正通过了
    散分,结贴