[急]自定义的数据结构,有uuid的,但是客户端导入tlb后没有其定义解决方案
[急]自定义的数据结构,有uuid的,但是客户端导入tlb后没有其定义
我创建一个ATL工程(dll),建立一个简单对象,添加方法。然后在同一个sln下面建立一个控制台程序作为客户端。客户端程序导入tlb后调用是成功的。
然后我在ATL工程里面添加一个头文件mystruct.h,内容如下:
然后在idl文件的第一行去包含它:
ATL的CoClass里面去使用My这个结构体是没有问题的。
【问题】但是我选择重新编译客户端程序以后,生成的tlh/tlb文件里面仍然只是有CoClass相关的类和接口,我没有看到My这个结构体被定义。在客户端的cpp文件里面使用My,编译器提示找不到。
这是为什么呢? 使用自定义的结构体,客户端程序为什么导入tlb以后没有看见呢?
------解决方案--------------------
直接在 idl文件里这么定义
typedef struct
{
[helpstring("A long value")]
int x;
int y;
}My;
然后import 这个tlb的时候,就可以使用My这个结构了
------解决方案--------------------
你留个邮箱,我给你个例子
我创建一个ATL工程(dll),建立一个简单对象,添加方法。然后在同一个sln下面建立一个控制台程序作为客户端。客户端程序导入tlb后调用是成功的。
然后我在ATL工程里面添加一个头文件mystruct.h,内容如下:
#pragma once
typedef [ uuid(22614E5D-A721-4815-B57D-66322ECDD65E)]
struct My
{
[helpstring("A long value")]
int x;
int y;
}My;
然后在idl文件的第一行去包含它:
#include "mystruct.h"
import "oaidl.idl";
import "ocidl.idl";
ATL的CoClass里面去使用My这个结构体是没有问题的。
【问题】但是我选择重新编译客户端程序以后,生成的tlh/tlb文件里面仍然只是有CoClass相关的类和接口,我没有看到My这个结构体被定义。在客户端的cpp文件里面使用My,编译器提示找不到。
这是为什么呢? 使用自定义的结构体,客户端程序为什么导入tlb以后没有看见呢?
------解决方案--------------------
直接在 idl文件里这么定义
typedef struct
{
[helpstring("A long value")]
int x;
int y;
}My;
然后import 这个tlb的时候,就可以使用My这个结构了
------解决方案--------------------
你留个邮箱,我给你个例子