在com服务器端的idl文件当中声明的接口和CoClass,都会生成相应的信息到tlb文件里面。com客户端用import语句导入tlb文件之后,生成的.tlh文件里面就有相应的接口和CoClass声明了。但是我发现如果我手工在idl文件当中添加一个结构体的定义,atl工程编译没有问题,也可以在工程内部用:import "oaidl.idl";
import "ocidl.idl";
typedef [ uuid(44ABAE82-A173-11d4-98DB-0080C8F5B2E4)]
struct MyStruct
{
int x;
int y;
}MyStruct;
...但是我在com客户端的工程里面去导入tlb文件之后,重新编译,在自动生成的tlh文件里面并没有看到有叫做MyStruct的结构体。这是为什么呢? 难道idl里面自定义的结构体,只能在atl工程内部使用吗? 不应该吧,还是我需要添加一些别的设置呢?谢谢。
import "ocidl.idl";
typedef [ uuid(44ABAE82-A173-11d4-98DB-0080C8F5B2E4)]
struct MyStruct
{
int x;
int y;
}MyStruct;
...但是我在com客户端的工程里面去导入tlb文件之后,重新编译,在自动生成的tlh文件里面并没有看到有叫做MyStruct的结构体。这是为什么呢? 难道idl里面自定义的结构体,只能在atl工程内部使用吗? 不应该吧,还是我需要添加一些别的设置呢?谢谢。
你的意思是如果不做成IRecord接口的话,其他的语言就不能用? 因为如果要给C#/Basic用的话,就不可能说给个.h头文件之类的,这种情况,要用到自定义的数据结构,是不是只有"做成com对象"这一种方式? 还是说做成从IRecord接口继承也是可以的?