我写了一个带窗口的ATL控件,在使用的时候使用#import "******.tlb" nonamespace 导入tlb文件,但始终找不到该定义,但在*.tlh中是有的,定义:IxxxPtr dd;错误提示:d:\Test\RichBmp\RichBmpTest\RichBmpTestDlg.h(52): error C2146: syntax error : missing ';' before identifier 'dd'

解决方案 »

  1.   

    是否少了#include <COMDEF.H>  ?
      

  2.   

    我用的是绝对路径,而且*.tlb是正确的
      

  3.   

    是否少了#include <COMDEF.H>  ?==================================
    包含了
      

  4.   

    检查一下no namespace是否起了作用,参考:
    http://support.microsoft.com/kb/269194/en-usIf you encounter errors that are due to missing type definitions, check the comments at the head of the .TLH to see which dependent type libraries may need to be imported first. Likely errors are syntax errors (for example, C2143, C2146, C2321), C2501 (missing decl-specifiers), or C2433 ('inline' not permitted on data declaration) while compiling the .TLI file. 
      

  5.   

    如果不是namespace的问题,那就只能是头文件包含顺序的问题了
      

  6.   

    如果我不用*.tlb文件,有其它的办法吗?我现在包含 "ImyInterface.h"和"ImyInterface_i.c"可以正常使用,我只想得到一个       ImyInterfacePtr,
    就是这个模板         _com_ptr_t<ImyInterface, IID_ImyInterface> ImyInterfacePtr;
      

  7.   

    可以试试不用nonamespace
    #import "***\**.tlb" rename_namespace("***")
    using namespace ***;
      

  8.   

    楼上的方法我用一个例子大致试了一下,可以!我现在放到工程里试一下,谢谢大家,尤其是HOHOXCN, 一会回来放分
      

  9.   

    但感觉还是没有实质性的解决问题,不知道为什么no_namespace不可以,希望有高人指教!
      

  10.   

    刚才又试了一下,no_namespace可以,只要rebuild一下就可以了:)