首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python3 ctype中返回ndarray?

如何在python3 ctype中返回ndarray?
EN

Stack Overflow用户
提问于 2018-08-02 22:11:20
回答 1查看 304关注 0票数 1

我有一个c++函数:

代码语言:javascript
运行
复制
double* hiho() {
  double *res = new double[10];
  return res;
}

代码语言:javascript
运行
复制
from numpy.ctypeslib import ndpointer

mylib.hiho.restype = ndpointer(dtype=ctypes.c_double, shape=(10,))

当调用该函数时,我得到以下错误:

代码语言:javascript
运行
复制
ValueError: '<P' is not a valid PEP 3118 buffer format string

我使用Python 3.6.2

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-02-11 14:09:54

我已经将numpy更新到版本1.18.1。现在,这个方法运行得很好:

代码语言:javascript
运行
复制
from numpy.ctypeslib import ndpointer

mylib.hiho.restype = ndpointer(dtype=ctypes.c_double, shape=(10,))

要简单地更新numpy:

代码语言:javascript
运行
复制
pip install numpy --upgrade

供您参考:

在numpy 1.15.4中,我与您的示例Mark With *double或*int出现了相同的错误。

我在MacOS上的编译代码行:

代码语言:javascript
运行
复制
g++ -c -fPIC -std=c++17 test.cpp -o test.o

g++ -dynamiclib -undefined suppress -flat_namespace test.o -o test.dylib

代码语言:javascript
运行
复制
g++ -c test.cpp -o test.o

g++ -dynamiclib -undefined suppress -flat_namespace test.o -o test.dylib

错误:

代码语言:javascript
运行
复制
ValueError: '<P' is not a valid PEP 3118 buffer format string
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51655753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档