ullflowmonitor.cpp:1223:21: error: invalid conversion from 'void*' to 'void**' [-fpermissive] aclrtMallocCached((void*)m_AclInputs.inputs[i].data,sizeof(uint8_t)*inputsize,ACL_MEM_MALLOC_HUGE_FIRST); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ./SS928V100_SDK_V2.0.2.0/include/acl.h:14:0, from acl_ocr/OCRProcess.h:15, from pullflowmonitor.h:46, from pullflowmonitor.cpp:1: ./SS928V100_SDK_V2.0.2.0/include/acl_rt.h:589:30: note: initializing argument 1 of 'aclError aclrtMallocCached(void**, size_t, aclrtMemMallocPolicy)' ACL_FUNC_VISIBILITY aclError aclrtMallocCached(void **devPtr, ^~~~~~~~~~~~~~~~~ pullflowmonitor.cpp: In member function 'void PullFlowMonitor::handleModel(void*)':
时间: 2023-07-08 17:55:16 浏览: 97
这个错误是因为aclrtMallocCached函数的第一个参数是一个指向void*类型的指针,而你的代码中传递的是一个void*类型的指针,这样会导致类型不匹配,编译器无法编译通过。
解决这个问题,可以将aclrtMallocCached函数的第一个参数的类型改为void*类型的指针的指针。
例如:
```c++
void* buffer;
aclError ret = aclrtMallocCached(reinterpret_cast<void**>(&buffer), size, ACL_MEM_MALLOC_HUGE_FIRST);
```
或者使用static_cast进行类型转换:
```c++
void* buffer;
aclError ret = aclrtMallocCached(static_cast<void**>(static_cast<void*>(&buffer)), size, ACL_MEM_MALLOC_HUGE_FIRST);
```
这样就可以避免这个编译错误了。
相关问题
PLCXProcess.cpp:3155:53: error: invalid conversion from 'char' to 'void*' [-fpermissive] memcpy(rlkpack->servRespDescInfo, sp[12].c_str(), 1);
这也是一个编译错误信息,提示在调用 memcpy 函数时出现了错误。在这个错误信息中,我们可以看到函数的第二个参数被错误地初始化。这个错误通常是由于传递给函数的参数类型不正确或者参数数量不正确造成的。
具体来说,错误信息显示第二个参数是一个 char 类型,但是 memcpy 函数要求第二个参数是一个 void* 类型。这意味着我们需要将 char 类型的参数转换为 void* 类型。
要解决这个问题,我们需要检查调用 memcpy 函数的代码,并确保传递给函数的参数类型和数量都是正确的。如果第二个参数是一个 char 类型,我们需要将其转换为 void* 类型,可以使用强制类型转换的方式,例如:
```c++
memcpy(rlkpack->servRespDescInfo, (void *)sp[12].c_str(), 1);
```
在这个例子中,我们使用了强制类型转换将 sp[12].c_str() 的返回值从 char* 类型转换为 void* 类型。注意,这个转换可能会导致一些潜在的问题,例如访问非法内存,所以需要进行一些额外的检查和测试来确保代码的正确性。
10 38 C:\Users\19746\Desktop\未命名2.cpp [Error] invalid conversion from 'void*' to 'bitree*' [-fpermissive]
这是一个编译器的错误信息,意思是你在代码中将`void`指针转换成了`bitree`指针,但是这种类型的转换是不被允许的。这是因为`void`指针可以指向任何类型的数据,而`bitree`指针只能指向`bitree`类型的数据。
要解决这个问题,你需要将`void`指针转换成正确的指针类型,比如:
```cpp
void* ptr = get_bitree_pointer();
bitree* tree = static_cast<bitree*>(ptr);
```
这里使用了`static_cast`运算符将`void`指针转换成`bitree`指针。当然,在进行这种类型的转换时,你需要确保`void`指针指向的实际上是`bitree`类型的数据。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)