您的位置:首页 > 编程语言 > C语言/C++

c/c++中利用gsoap调用webservice服务的一个诡异问题解决方法

2011-11-04 11:00 756 查看
1>正在编译...

1>stdsoap2.c

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(4440) : error C2275: “SOCKET”: 将此类型用作表达式非法

1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(118) : 参见“SOCKET”的声明

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(4440) : error C2146: 语法错误 : 缺少“;”(在标识符“fd”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(4440) : error C2065: “fd”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(4441) : error C2065: “fd”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(4451) : error C2065: “fd”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5571) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5573) : error C2065: “msg”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5573) : warning C4047: “=”: “int”与“const char *”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5574) : error C2065: “msg”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5575) : error C2065: “msg”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5575) : warning C4047: “=”: “int”与“const char *”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5577) : error C2065: “msg”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(5577) : warning C4047: “return”: “const char *”与“int”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6689) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6690) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6694) : error C2065: “i”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6694) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6694) : warning C4047: “函数”: “soap_plist **”与“int *”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6694) : warning C4024: “soap_array_pointer_lookup”: 形参和实参 6 的类型不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6696) : error C2065: “i”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6696) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6696) : warning C4047: “函数”: “soap_plist **”与“int *”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6696) : warning C4024: “soap_pointer_lookup”: 形参和实参 4 的类型不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6697) : error C2065: “i”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6698) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6698) : warning C4047: “函数”: “soap_plist *”与“int”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6698) : warning C4024: “soap_is_embedded”: 形参和实参 2 的类型不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6699) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6699) : warning C4047: “函数”: “soap_plist *”与“int”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6699) : warning C4024: “soap_is_single”: 形参和实参 2 的类型不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6701) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6701) : warning C4047: “函数”: “soap_plist *”与“int”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6701) : warning C4024: “soap_set_embedded”: 形参和实参 2 的类型不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6703) : error C2065: “i”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6740) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6741) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6752) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6752) : warning C4047: “=”: “int”与“soap_plist *”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6752) : warning C4047: “=”: “soap_plist *”与“int”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6754) : error C2065: “h”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6756) : error C2065: “h”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6758) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6758) : error C2223: “->next”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6758) : error C2065: “h”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6759) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6759) : error C2223: “->type”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6760) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6760) : error C2223: “->mark1”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6761) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6761) : error C2223: “->mark2”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6762) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6762) : error C2223: “->ptr”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6763) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6763) : error C2223: “->array”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6764) : error C2065: “h”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6764) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6764) : warning C4047: “=”: “soap_plist *”与“int”的间接级别不同

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6765) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6765) : error C2223: “->id”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6766) : error C2065: “pp”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6766) : error C2223: “->id”的左侧必须指向结构/联合

1>d:\bluemei\c++\webservicetest\fileuploader\webservice_lib\stdsoap2.c(6766) : warning C4033: “soap_pointer_enter”必须返回值

1>soapC.c

1>d:\bluemei\c++\webservicetest\fileuploader\sftong\soapc.c(1135) : error C2143: 语法错误 : 缺少“;”(在“const”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\sftong\soapc.c(1138) : error C2065: “soap_tmp_faultcode”: 未声明的标识符

1>d:\bluemei\c++\webservicetest\fileuploader\sftong\soapc.c(1444) : error C2143: 语法错误 : 缺少“;”(在“const”的前面)

1>d:\bluemei\c++\webservicetest\fileuploader\sftong\soapc.c(1447) : error C2065: “soap_tmp_SOAP_ENV__Value”: 未声明的标识符

这个问题是在纯c环境编译gsoap库时发生的,找了好久现在终于解决了(vs2008):

先看一段gsoap报错代码:

stdsoap2.c(4440) : error C2275: “SOCKET”: 将此类型用作表达式非法:

tcp_accept(struct soap *soap, SOAP_SOCKET s, struct sockaddr *a, int *n)

{

(void)soap;

SOAP_SOCKET fd;

...

}

把上面代码中全面两句换个顺序就解决了:

tcp_accept(struct soap *soap, SOAP_SOCKET s, struct sockaddr *a, int *n)

{

(void)soap;

SOAP_SOCKET fd;

...

}

问题原因:因为c语言中,变量的定义必须在函数体前面,在变量定义之前不能有其它代码.而c++中没有这样的问题.

注意是所有的变量定义前面.

不过很纳闷为什么发布的源码里面会出现那样的问题,难道跟环境有关吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: