当前位置:首页 » 编程语言 » python调用clibrary

python调用clibrary

发布时间: 2025-01-28 17:15:56

① 有谁知道python怎么调用c#的dll

1、首选运行工具 makepy.py。

② 在python中如何调用PCSC中的接口

你找个工具将这个接口API,自动转换成python版本的就可以了。好象是SWIG和Boost。 这两个以前看过,偶尔还试过几次。之所以建议你用自动工具,就是因为python对于C++扩展麻烦些,对于C语言接口可以使用ctypes和cython简单解决。不过C++如果用这些方法有时候被很麻烦。

boost在linux里会经常用到,在windows下也可以使用。SWIG在一般的教程里都会提及到。SIP也是最近出名的。

下面是一些参考资料,搜索来的。

=== 使用工具进行扩展 ===
虽然扩展过程并不复杂,但也可以使用许多已知的工具简化扩展过程。
(1) SWIG
由David Beazley创建,是一个自动的扩展构造工具。它读入注释的C/C++头文件,为python、tcl、perl等多种脚本语言产生wrap代码。SWIG可以包装大量C++特性到Python的扩展模块中。
评价:swig简单,可以支持多种脚本文件,但支持的c++特性不完备。
(2) SIP
由Phil Thompson创建,是一个C++模块构造器,专门为C++的类创造wrapper。它曾经被用于创建PyQt和PyKDE扩展模块,因此比较出名。
评价:支持C++特征很齐全,但比较复杂。
(3) bgen
该工具被包含在标准Python发布包中的模块构建工具集里,由Jack Jansen维护。它用于产生在Macintosh版本可用的Python扩展模块。
(4) pyfort
由Paul bois创建,用来产生Fortran语言生成的扩展模块。
(5) cxx
也由Paul Dubois创建,是一个库,为Python的C++扩展提供了友好的API。Cxx允许将许多python对象(如list和tuple)使用到STL的运算中。库也提供了C++异常处理到python异常处理的转化。
(6) WrapPy
由Greg Couch创建,通过读入C++头文件来产生扩展模块。
(7) Boost Python Library
由David Abrahams创建。该库提供了更多与众不同的C++ wrap到python扩展中,而只需要对要扩展的C++类写很少的附加信息。
评价:Boost为C++提供了许多实用的库,如Regex(正则表达式库)、Graph(图组件和算法)、concept check(检查泛型编程中的concept)、Thread(可移植的C++多线程库)、Python(把C++类和函数映射到Python之中)、Pool(内存池管理)等等。

Boost总体来说是实用价值很高,质量很高的库。并且强调对跨平台的支持。但是Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。
boost.python支持的c++特性较多,但是比较复杂。

③ 如何用python获得C函数中的变量的值

网页链接

python ctypes 第一句话:

ctypesis a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.

没看到有说可以直接访问data。

你可以这样加这样的函数:

intget_a()
{
returna;
}

再在python里面调用。

④ python的opencv有源码

Python中调用cv2库是通过编译C/C++代码并生成so文件实现的。opencv的cv2.so文件是通过cv2.cpp文件编译而成。此文件位于指定的gitee仓库中。在该仓库的特定行,使用cmake函数add_library指定生成cv2.so。

调用cv2.so的方法仅需导入cv2库即可。这句代码由自动生成的python_loader.cmake文件产生,该文件同样位于上述gitee仓库中。生成的文件存放在python_loader文件夹下,其中cv2/__init__.py文件导入了cv2.so,并利用了其中定义的C函数。

导入cv2.so并不足够,还需要借助numpy来处理数据结构。因此,在python_loader/cv2/__init__.py文件中,首先导入cv2.so,然后进一步导入了额外的python_loader/cv2/_extra_py_code/等。这里import cv2的语句存在歧义,根据当前环境决定是执行cv2/__init__.py还是查找cv2.so。

在执行import cv2时,实际执行的是python_loader/cv2/__init__.py文件。在该文件中,首先删除当前cv2模块,然后重新导入cv2.so。接着,导入了python_loader/cv2/_extra_py_code/gapi,为cv2添加了额外的数据处理函数。最终,通过py_code_loader.init('cv2')执行了_extra_py_code.init('cv2'),将gapi整合入cv2模块。

热点内容
c语言管理系统登录 发布:2025-01-30 09:05:30 浏览:403
ad原理图编译如何规避出错 发布:2025-01-30 08:59:51 浏览:475
指纹密码锁如何用手机远程开锁 发布:2025-01-30 08:59:41 浏览:603
中国期刊全文数据库的检索入口 发布:2025-01-30 08:57:16 浏览:175
手机怎么解压微盘 发布:2025-01-30 08:51:31 浏览:879
数据库exp命令 发布:2025-01-30 08:45:47 浏览:444
国服文明重启为什么进不了服务器 发布:2025-01-30 08:28:39 浏览:224
android不显示图标 发布:2025-01-30 08:06:11 浏览:464
医院yy密码是多少 发布:2025-01-30 08:03:35 浏览:979
平板电脑怎么升级到安卓 发布:2025-01-30 08:03:24 浏览:958