标准C/C++程序通过gSOAP调用WebService
转自:http://commandos.blog.51cto.com/154976/130652
一、 环境准备
在本文中,所有程序均在Linux下开发完成,经测试能够正常运行。
在开发过程中,我们需要用到gSOAP,可以从以下网址下载获得:[url]http://www.cs.fsu.edu/~engelen/soap.html[/url]
我下载的是gsoap_2.7.12.tar.gz
下载下来解压缩,按正常安装过程进行编译、安装。
# tar zxvf gsozp_2.7.12.tar.gz
# cd gsoap_2.7.12
# ./configure –-prefix=/usr/local/gSOAP(指定安装路径)
# make
# make install
二、 生成相关文件
1、通过WSDL文档,生成C/C++头文件
# /usr/local/gSOAP/bin/wsdl2h –c –o TestHeader.h [url]http://192.168.0.151:8080/services/TestWS?wsdl[/url]
2、拷贝gSOAP源代码中import文件夹下的stlvector.h文件到TestHeader.h同一目录,如果在解析WSDL文档时使用了-s参数,即不使用STL,则不需要拷贝这一文件。
3、解析TestHeader.h文件,生成存根程序
# /usr/local/gSOAP/bin/soapcpp2 –c –C TestHeader.h
命令中参数-c代表生成标准C程序,若没有这个参数,则生成C++程序。
命令中参数-C代表仅生成客户端程序,若没有这个参数,则默认生成客户端和服务端程序。
三、 进行相关开发
1、新建工程
新建一个C的工程,并将刚刚生成的文件拷贝到工程中,设置工程属性,包含gSOAP源代码目录,链接属性处,需要包含文件libgsoap.a(使用C语言开发)或者libgsoap++.a(使用C++开发)。
2、代码开发
WebService的具体调用方式可以参见生成的soapStub.h文件。
Demo代码(调用WebService的addUser):
#include “soapH.h”
#include “TestHeaderHttpBinding.nsmap”
int main()
{
struct soap clientSOAP;
struct _ns1__addUser addUserMsg;
struct _ns1__addUserResponse addUserResponse;
soap_init(&clientSOAP);
addUserMsg.in0 = “test”;
addUserMsg.in1 = “test”;
add
相关文档:
http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html
Sunday, May 10, 2009
Hadoop should target C++/LLVM, not Java (because of watts)
< type="text/javascript">
digg_url="http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html";
Over the years, ......
最近工作不紧,抽空看了下C、C++的指针,发现了一些平时没注意到的指针用法和问题。
1、指针引用
void func1(MYCLASS* &pBuildingElement);
乍一看,怪怪的,看了下解释,细想一下和指针的指针类似:
void func1(MYCLASS** pBuildingElement);
看下面的例子:
...
MyClass* p = new MyClass;
func1(p);
......
假设在test.h中定义了一个static bool g_test=false;
若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!shit!!
一、c程序存储空间布局
C程序一直由下列部分组成:
1)正文段——CPU执行 ......
一、概述
1、C++虽然是从C语言中发展的,但其中有许多要点,是C语言中所没有的,包括引用,内联函数等,在此做一个介绍。
2、对于C/C++中的基础是必须要详细了解的,能够深刻理解其含义以及其来源,是一个人内功深刻的表现。如果一些基础的问题,
都说不上来,又如何给人以信心呢。
二、常见的问题
1、为什么要使 ......
ADO(ActiveX Data
Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE
DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。
ADO(ActiveX Data Object)是Microsoft数据库应用
程序
......