急,不够分再加!找不到 IxxxPtr定义, 在线等

时间:2022-12-16 21:29:36
我写了一个带窗口的ATL控件,在使用的时候使用#import "******.tlb" nonamespace 导入tlb文件,但始终找不到该定义,但在*.tlh中是有的,

定义:

IxxxPtr dd;

错误提示:d:\Test\RichBmp\RichBmpTest\RichBmpTestDlg.h(52): error C2146: syntax error : missing ';' before identifier 'dd'

14 个解决方案

#1


一般是生成的头文件的路径问题,或者是以前的头文件没有更新,或者是引用错了头文件-___- 没猜对的话当偶没说过^^b

#2


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

#3


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

#4


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

==================================
包含了

#5


检查一下no namespace是否起了作用,参考:
http://support.microsoft.com/kb/269194/en-us

If 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. 

#6


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

#7


接口名写错了?

#8


没有写错.....

#9


如果我不用*.tlb文件,有其它的办法吗?我现在包含 "ImyInterface.h"和"ImyInterface_i.c"可以正常使用,

我只想得到一个       ImyInterfacePtr,
就是这个模板         _com_ptr_t<ImyInterface, IID_ImyInterface> ImyInterfacePtr;

#10


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

#11


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

#12


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

#13


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

#14


顶!!!!!!!!!!

#1


一般是生成的头文件的路径问题,或者是以前的头文件没有更新,或者是引用错了头文件-___- 没猜对的话当偶没说过^^b

#2


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

#3


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

#4


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

==================================
包含了

#5


检查一下no namespace是否起了作用,参考:
http://support.microsoft.com/kb/269194/en-us

If 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. 

#6


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

#7


接口名写错了?

#8


没有写错.....

#9


如果我不用*.tlb文件,有其它的办法吗?我现在包含 "ImyInterface.h"和"ImyInterface_i.c"可以正常使用,

我只想得到一个       ImyInterfacePtr,
就是这个模板         _com_ptr_t<ImyInterface, IID_ImyInterface> ImyInterfacePtr;

#10


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

#11


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

#12


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

#13


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

#14


顶!!!!!!!!!!