Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120445
  • 博文数量: 25
  • 博客积分: 1436
  • 博客等级: 上尉
  • 技术积分: 256
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-17 10:10
文章分类

全部博文(25)

文章存档

2016年(1)

2015年(5)

2012年(1)

2011年(3)

2010年(6)

2009年(8)

2008年(1)

我的朋友

分类: LINUX

2009-09-09 17:22:00

      8.4 如何用gSOAP#module指令构建模块和库

      #module指令被用来构建模块。一个库能用一个模块和链接多个Web服务应用程序构建起来。该指令应该出现在头文件的顶部,并具有以下格式:

      #module "name" #module "name" "fullname"

      这模块的name必须是唯一的短名。name对大小写不敏感,并且不能超过4个字符。如果全名存在,代表了模块的全名。

      该头文件其他内容包括类型声明以及可选的远程方法和SOAP头文件/fault代码。 When the gSOAP compiler processes the header file module, it will generate the source codes for a library. The Web services application that uses the library should use a header file that imports the module with the #import directive.该头文件其他内容包括类型声明以及可选的远程方法和SOAP头的声明/故障。当gSOAP编译器编译这头文件的模块时,它会产生一个库的源代码。 Web服务应用程序使用该库应用到一个头文件,这个头文件用#import指令导入这模块。

      例如:

      /* Contents of module.h */

      #module "test"

      long;

      char*;

      struct ns__S

      { ... }

      module.h头文件声明了一个long, char* 和一个struct ns__X。该模块名称是“test”,因此gSOAP编译器为这些类型生成一个带有序列化(反序列化)的testC.cpp文件。该testC.cpp库可以单独汇编和联接一个应用程序,这个应用程序来源于一个用#import“module.h导入“module.h”文件的头文件。当你想建立一个库,你也应该编译testClient.cpp文件,这个库包括您在模块头文件中定义的远程方法。

      模块的导入有一些限制。一个模块必须导入到另一模块的头使用该模块的内容,你必须把这个import语句放在文件中的所有其他声明,包括其他import(除非这些也模块)之前。它也建议把所有基本数据类型定义放在根模块导入层次的,例如使用typedef声明XSD类型(见10.3节)。

      您不能使用一个模块单独建立一个SOAPXML的应用程序。也就是说,在gSOAP头文件的最后导入链不应该是一个模块。

      当多个模块被联系起来,它们的类型必须被声明在一个模块中,仅为了能够避免名称冲突和链接错误。您不能创建两个模块共享相同类型的声明和链接的模块。当这些模块必须联系起来时,必要时,应考虑创建一个模块的层次结构,这样的类型声明只有一次并且只能在一个模块中。

阅读(1091) | 评论(0) | 转发(0) |
0

上一篇:gSOAP 文档翻译(1.4)

下一篇:shell判断数字

给主人留下些什么吧!~~