复杂C++数据类型和 COM
Complex C++ data types and COM
我希望从ASP Classic访问dll的功能,我的理解是COM是要走的路。
与 dll 关联的 .h 头文件如下所示:
...
struct _Data;
typedef struct _Field
{
INT iType;
BOOL bChanged;
INT iFieldId;
INT iInternalFieldId;
INT iLenght;
INT iDec;
RW iRW;
union
{
DOUBLE d;
CHAR* s;
LONG l;
BOOL b;
LONG date;
struct _Data* data;
}
value;
} FIELD;
typedef struct _MetaData
{
HANDLE hHandle;
INT iDatabaseId;
INT iFields;
INT iStructSize;
} META;
typedef struct _Data
{
META metaData;
FIELD rgField[MAX_FIELD];
} DATA, *PDATA;
...
#ifdef __cplusplus
extern "C"
{
#endif //__cplusplus
__declspec(dllexport) P_DATA __stdcall CreateData(INT iDatabaseId);
__declspec(dllexport) ERROR __stdcall GetStr(DATA* pData, INT iFieldId, CHAR** ppsValue, INT iLen);
...
因此,您可以看到函数本身很简单,但数据相当复杂。
我应该如何为我的 COM 服务器定义此类数据类型?
谢谢
巴里
脚本语言中没有结构类型,如VBScript和JScript,在大多数IIS应用程序中与ASP一起使用。不能声明结构变量来接收返回值或将其传递给C++函数。
您需要将结构包装到自动化类型中。编写实现 IDispatch 的自动化服务器类,并将结构成员公开为简单自动化类型的属性或其他自动化服务器类(例如,具有 Count 和 Item 属性的集合类(。参见Don Box的"通过IDispatch传递结构",Microsoft系统杂志,1996年6月。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特定数据类型的模板类
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 有没有办法提示用户使用哪种数据类型作为模板 c++
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何获取C++字符数据类型的地址
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 构造智能点数据类型以及普通数据类型的通用方法
- 如何使映射键具有两种不同的数据类型?
- 数据类型"struct seq<0, 1, 2>{}"含义是什么?
- 如何在不破坏现有应用程序的情况下更改 API 中 stl 容器的数据类型?
- 如何访问从 COM 对象返回的 VARIANT 数据类型中的安全数组C++?
- 复杂C++数据类型和 COM