- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 sage 和外部 c 库。外部库已经具有用 cython 编写的 python 绑定(bind),并处理 python 的数字类和 gmp 整数之间的转换。
为了使其能够与 sage 一起使用,我想绕过该转换:sage 整数已经在底层使用了 gmp。但为了让我的代码编译(和工作),我在任何地方都使用了显式类型转换,我认为应该有更好的方法来做到这一点。如果我能整理代码,我希望最终将其上游到 Sage。
在 sage 中,整数类型 (mpz_t
) 的 gmp 绑定(bind)在 pxd
文件中声明,如下所示:
ctypedef struct __mpz_struct:
int _mp_alloc
int _mp_size
mp_ptr _mp_d
ctypedef __mpz_struct mpz_t[1]
但是外部库有自己的 gmp pxd
并声明:
ctypedef struct mpz_t:
pass
在我的代码中在 sage.mpz_t
和 mylib.mpz_t
之间手动转换工作正常,但是将 mylib 的绑定(bind)重写为使用 Sage 的 gmp 绑定(bind)而不是它自己的?我想是的,但是怎么样呢?
gmp 中的函数签名之间也存在不一致的情况,例如在圣人中:
void mpz_set (mpz_t rop, mpz_t op)
但是在mylib中,出现了一个狂野的const
:
void mpz_set(mpz_t rop, const mpz_t op)
我有一个预感,sage 和 mylib 之间的区别在于 mylib 将 mpz_t 视为不透明的结构,但 sage 深入研究了实现。我对低级 C 没有真正的经验,因此任何对我可以用来自学这方面 Material 的引用都将不胜感激。
最佳答案
您无需担心签名的差异 - 对于 cdef extern
声明,Cython 只需要了解足够的信息即可正确调用 C 代码。因此,const 的存在/不存在对 Cython 来说几乎没有什么影响。同样,如果您不从 Cython 使用结构体中的所有字段,则无需声明它们。
如果您准备更改“mylib”代码以使用 sage 声明,那么这很简单 - 只需使用 cimport
。我相信正确的导入应该是
from sage.libs.gmp.types cimport mpz_t
(这依赖于 Python 路径上安装的 sage .pxd 文件。)对您要使用的函数执行类似的操作。
关于c - 同一 C 库的多个 cython 使用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49823300/
我正在尝试使用包含 XPath 的选择器订阅 WebLogic JMS 消息。在 WebLogic 中,它是使用“JMS_BEA_SELECT”函数实现的。像这样的东西: session.creat
我想使用 sage 和外部 c 库。外部库已经具有用 cython 编写的 python 绑定(bind),并处理 python 的数字类和 gmp 整数之间的转换。 为了使其能够与 sage 一起使
我已经能够成功地使用 logman 来转储一些内核跟踪。但是,我希望能够以编程方式在我的应用程序中启用内核事件的实时消耗(主要是线程/进程创建/删除和文件 I/O)。完成此任务的最佳方法是什么? 最佳
我想在 FreeBSD 10.1 上编写一个 C 程序,使用 libdtrace 实现 DTrace 消费者。 我知道我需要先调用 dtrace_open() - 例如我找到了 this旧演示文稿,但
我正在尝试使用消息队列 (RabbitMQ) 在基于微服务的架构中处理请求授权。 根据这些 instructions,我已经将接收器和发送器配置为 .NET Core 中的控制台应用程序.但是,在实际
我遇到了一个场景,我必须让一个基于 Axis2 的 ws 消费者在 WebMethods 中作为 java 服务工作。我首先在 netbeans 中实现了 ws Consumer 只是为了看看它是否有
据我所知,Lambdas 用于监听事件并运行一段代码来响应这些事件。 事件必须是 AWS 服务或 HTTP 端点。 如果我有一个 RabbitMq 运行在 上的服务EC2 服务器 (不使用 SQS),
所以我正在构建一个使用 Ruby on Rails 前端和 Java 后端的 Web 应用程序。因此,基本上,当用户登录网站时,我希望在屏幕上显示该用户的所有交易数据历史记录的列表。 我需要执行此操作
我已经实现了一个 Java Servlet 过滤器,它使用 PF 提供的 Java API 从 PingFederate (PF) 服务器消耗 token 。这使得我的应用程序能够在 PF SSO 设
我有一个 WCF SOAP 使用者,它由 Visual Studio 2012 从 WSDL 实现。 WSDL 由 PeopleTools 生成。基础对象的类型为 System.ServiceMode
Oauth2 快把我逼疯了。 目前,我的 Rails 应用程序通过 Facebook 和其他 Oauth2 提供商对用户进行身份验证,这要归功于 Devise 和 OmniAuth 的美妙之处。用户无
我想获得一些关于在 Chrome 扩展和 Gmail 小工具中正确处理 Salesforce OAuth 消费者 key 和 secret 的想法。 Chrome 扩展程序本质上是用 zip 兼容格式
我正在使用 Express、Node 和 Google Drive API。我正在尝试使用 PDF 文件的 blob 响应对我的端点的 API 调用。但是当我从 Drive API 获取文件时我不想保
我是一名优秀的程序员,十分优秀!