error: cannot convert ‘const char*’ to ‘ipp_t*’ {aka ‘_ipp_s*’} 155 | response = cupsDoRequest(CUPS_HTTP_DEFAULT, "localhost:631", request, NULL);
时间: 2024-03-03 19:53:34 浏览: 129
这个错误是因为cupsDoRequest函数的第三个参数需要传递一个ipp_t类型的指针,但是你传递了一个字符串类型的指针。
根据你提供的代码,我假设你是想发送一个Get-Job-Attributes请求,获取打印任务的打印页数。如果是这样的话,你需要按照以下步骤修改代码:
1. 创建一个新的ipp请求对象
```
ipp_t *request = ippNewRequest(IPP_OP_GET_JOB_ATTRIBUTES);
```
2. 设置请求的属性
```
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_JOB, "job-id", jobId);
```
3. 发送请求并获取响应
```
ipp_t *response = cupsDoRequest(CUPS_HTTP_DEFAULT, "localhost:631", request);
```
4. 处理响应数据
在你的代码中,你需要从响应对象中获取打印任务的打印页数。可以使用ippFindAttribute函数和ippGetInteger函数来获取。例如:
```
ipp_attribute_t *attr = ippFindAttribute(response, "job-printed-page-count", IPP_TAG_INTEGER);
if (attr != NULL) {
int page_count = ippGetInteger(attr, 0);
printf("Print job %d has %d pages\n", jobId, page_count);
}
```
5. 销毁请求和响应对象
```
ippDelete(request);
ippDelete(response);
```
需要注意的是,在使用ipp API时,你需要包含头文件"ipp.h"。同时,cupsDoRequest函数的第四个参数可以设置为NULL,表示不需要获取响应对象。
阅读全文