`
westice
  • 浏览: 115589 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

gcc编译dll,python加载

阅读更多

   python开发效率高,实际项目时python搭建整个项目框架,关键模块用c编写,是个不错的办法!

   c函数对python的接口要按规则写。

   比如一个阶乘c函数的头文件定义:

   dll.h:

#ifndef LIB_H  
#define LIB_H  
extern "C" long __declspec(dllexport)factorial(int n);  //接口定义
#endif  

 

   dllmain.c:

 

#include "dll.h"  

long factorial(int n){
    if(n == 1)return 1;
    return n * factorial(n - 1);
}

   然后用gcc编译成dll文件。

         gcc -Wall -shared dllmain.c -o dllmain.dll

  或者 gcc --shared dllmain.c -o dllmain.dll

  刚开始gcc提示找不到cc1.exe,在dev-cpp mingw32中有个cc1plus.exe的文件,改成cc1.exe拷贝到gcc bin目录中即可。

  生成的dll就可以使用了。

from ctypes import *

#libtest=CDLL("dllmain.dll")
libtest=cdll.LoadLibrary("dllmain.dll")
print libtest.factorial(10)
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    python27_d.lib python27.lib python27_d.dll python27.dll windows linux 源码

    Windows使用上述的`.lib`和`.dll`文件,而Linux则依赖共享库文件(如`.so`),并且通常使用`g++`或其他GCC工具链来编译和链接Python扩展模块。在Linux上,Python的安装通常包括编译源代码,配置环境,然后执行make和...

    [mingw gcc编译]opencv 3.2 codeblocks可用版本

    bin 文件夹包含了编译生成的动态链接库(.dll 文件)和静态链接库(.a 或 .lib 文件);lib 文件夹则包含了链接时所需的库文件。 5. **集成到 CodeBlocks**:将这三个文件夹解压后,将其内容合并到 CodeBlocks 自带...

    python中调用.c文件生成的so、dll文件(csdn)————程序.pdf

    在Python中调用C语言编译的动态链接库(.dll on Windows, .so on Linux)是一种常见的跨语言编程技术,它允许我们利用C语言的高效性和Python的易用性相结合,以实现高性能的程序。本文将详细介绍如何在Python中调用C...

    能使用boost.python的MinGw(GCC)动态链接库

    为了方便大家使用MinGW(GCC)+_boost.python,特意只做了三个dll,可以很方便地将c++代码转为python模块. libboost_python-mgw45-1_49.dll libboost_python-mgw45-d-1_49.dll python27.dll 这三个文件我已放在资源...

    Python-直接从Python导入C文件

    然而,如果C代码没有被编译成库,而是包含为源代码文件,那么就需要一种方法来直接从Python加载并执行这些C文件。这个主题,"Python-直接从Python导入C文件",就是关于如何在Python中实现这种直接调用。 首先,我们...

    QT 5.14.2/windows msvc x64静态编译好的目录打包

    MTd方式,多线程DLL,不需要QT运行库,仍然需要VC运行库 如果需要完全不需要外部运行库的MT版本,可下载我的5.15.0版本: https://download.csdn.net/download/startl/12606774 64位版本,支持VS2017和VS2019,...

    使用python脚本调用c代码实现wav音频的变语速不变音调。

    该工程使用python脚本调用c代码实现wav音频...1.gcc编译生成动态库speed_change.dll:gcc -o speed_change.dll -shared -fPIC runsonic.c sonic.c sonic.h。 2.使用python代码speedup.py调用speed_change.dll进行变速。

    wxFormBuilder V3.9

    另外,还有`libstdc++-6.dll`和`libiconv-2.dll`,它们是GCC编译器的C++标准库和字符编码转换库,是运行使用GCC编译的Python扩展模块所必需的。 总的来说,wxFormBuilder V3.9结合了wxWidgets和Python,为开发者...

    python调用C语言动态库例程

    现在,我们转向Python部分,`python_demo.py.txt`文件展示了如何在Python中调用这个C语言编译的动态库: ```python from ctypes import cdll # 加载动态库 lib = cdll.LoadLibrary('./libadd.so') # Linux/Mac, ...

    python调用C/C++ demo

    在Python中,你可以使用`ctypes`来加载这个库并调用`add`函数: ```python import ctypes lib = ctypes.cdll.LoadLibrary('./lib_c_demo.so') add_func = lib.add add_func.argtypes = [ctypes.c_int, ctypes.c_...

    使用c语言编写动态链接库(linux下.so文件,windows下dll文件),使用python调用c语言接口。.zip

    DLL文件可以在运行时被加载,节省内存,因为多个程序可以共享同一份代码。 - **Linux下的.so文件**:在Linux系统中,动态链接库的扩展名为`.so`(共享对象)。它们与DLL类似,允许程序在运行时动态地加载和链接库,...

    pyc 反编译成py 文件

    `.pyc`文件是Python编译后的字节码文件,用于提高程序的加载速度。在某些情况下,可能需要将`.pyc`文件反编译为`.py`文件,以查看或编辑源代码。 `pycdc.exe` 是一个关键的工具,可能是专门用于将`.pyc`反编译为`....

    Python扩展和嵌入

    在UNIX/Linux环境下,一般使用GCC进行编译。配置过程相对简单,主要是确保Python开发包已安装,并且包含了必要的头文件和库文件。 #### 三、Python扩展模块示例 下面通过一个具体的例子来展示如何创建一个简单的...

    Python调用MPSizectorDemo.rar

    在Python中调用非Python的库通常有两种主要方法:一是使用Python的ctypes库,它允许直接调用C语言编译的动态链接库(DLL或.so文件);二是通过SWIG(Simplified Wrapper and Interface Generator)工具生成接口,...

    Make成python可以调用的.so文件。

    这种情况下,我们通常会使用Cython或者SWIG等工具将C++代码编译为Python可以调用的动态链接库(.so文件,Linux下的动态库,Windows下对应的是.dll文件)。本文将详细介绍如何将C++代码编译为Python可调用的.so文件,...

    QTMinGw下已经编译好的gdal库

    6. **测试与调试**:编译并运行你的程序,检查是否能正确加载GDAL库并执行预期功能。如果有错误,根据错误信息调整配置或检查库文件是否完整。 在实际应用中,你可能还需要考虑GDAL的线程安全问题,以及GDAL提供的...

    现编译的lib_json,json,包含头文件,lib,dll, 包含64位,32位亲测可用

    库文件则包含了编译好的二进制代码,这些代码在编译用户程序时会被链接到目标代码中,或者在运行时动态加载,以提供JSON解析、生成等功能。dll文件是Windows操作系统中的动态链接库,它可以在运行时被多个程序共享,...

    python调用C与C++语言.pdf

    在提供的Python示例代码中,首先导入了`ctypes`模块,然后使用`cdll.LoadLibrary`函数加载了C语言和C++语言编写的动态链接库。之后,通过库对象调用相应的方法。 在Python脚本中调用C语言库函数`foo`和`add`时,...

    python与C、C++混编的四种方式(小结)

    - 使用GCC编译C文件: ```bash gcc -shared -fPIC -o libpycall.so pycall.c ``` - 运行Python脚本: ```bash python pycall.py ``` #### 第二种:Python调用C++(类)动态链接库(利用ctypes) ##### 原理 与...

Global site tag (gtag.js) - Google Analytics