广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >胶水语言Python与C/C++的相互调用的实现
  • 508
分享到

胶水语言Python与C/C++的相互调用的实现

PythonC++调用PythonC语言相互调用 2022-06-02 22:06:40 508人浏览 泡泡鱼
摘要

准备工作: python:https://www.Python.org/downloads/ Dev-c++:Https://sourceforge.net/projects/orwelldevcpp/ GCc和g+

准备工作:

pythonhttps://www.Python.org/downloads/

Dev-c++Https://sourceforge.net/projects/orwelldevcpp/

GCc和g++:http://mingw-w64.org/doku.PHP

notepad++:https://notepad-plus.en.softonic.com/

一、Python调用C

步骤1:Csayhello.c


#include<stdio.h>
 
void show_hello()
{
    printf("------------来自C语言的问候-----------\n");
    printf("-----Peter Zhao says:Hello C world!-----\n\n");
}

步骤2:

命令:gcc Csayhello.c -fPIC -shared -o lib_Csayhello.so

步骤3:Psayhello.py


from ctypes import *
 
#加载动态库
lib = cdll.LoadLibrary(r"./lib_Csayhello.so")
lib.show_hello()
 
print("-----------来自Python语言的问候--------------")
print("---Peter Zhao says:Hello Python world,too!---")

步骤4:

命令:python Psayhello.py

注意:python为32位,没有就装一个。

运行结果:

二、Python调用C++

步骤1:新建项目dll_demo.dev

步骤2:dllmain.cpp


#define DLLEXPORT extern "C" __declspec(dllexport)
 
DLLEXPORT int  multiply(int a, int b) {
    return a * b;
}
 
//两数相加
DLLEXPORT int  add(int a, int b) {
    return a + b;
}
//两数相减
DLLEXPORT int  sub(int a, int b) {
    return a-b;
}

步骤3:dll.h


int multiply(int, int);
 
class Mymath {
    int sum(int, int);
    int sub(int, int);
};

步骤4:编译生成dll_demo.dll

步骤5:Pdll_demo.py


import ctypes
#lib = ctypes.cdll.LoadLibrary(r"./dll_demo.dll")
lib = ctypes.WinDLL(r"./dll_demo.dll")
#print(lib)
print(lib.multiply(80,95))
print(lib.add(80,95))
print(lib.sub(80,95))

步骤6:

命令:python Pdll_demo.py

注意:python为32位,没有就装一个。

运行结果:

三、C++调用Python函数

步骤1:Caculate.py


def add(a,b):
    return a+b

步骤2:新建项目test.dev,然后设置一下“项目属性”的链接库、库目录、包含文件目录等3个部分。

步骤3:test.cpp


#include <python.h>
#include<iOStream>
 
using namespace std;
 
int main()
{
    Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化
    if (!Py_IsInitialized())
    {
        printf("初始化失败!");
        return 0;
    }
    PyRun_SimpleString("import sys");
    PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径
 
 
    PyObject * pModule = NULL;//声明变量
    PyObject * pFunc = NULL;// 声明变量
    pModule = PyImport_ImportModule("Caculate");//这里是要调用的文件名Caculate.py
    if (pModule==NULL)
    {
        cout << "没找到" << endl;
    }
    pFunc = PyObject_GetAttrString(pModule, "add");//这里是要调用的函数名
    PyObject* args = Py_BuildValue("(ii)", 100, 120);//给python函数参数赋值
 
    PyObject* pRet = PyObject_CallObject(pFunc, args);//调用函数
 
    int res = 0;
    PyArg_Parse(pRet,"i",&res);//转换返回类型
 
    cout << "res:" << res << endl;//输出结果
 
    Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。
 
    return 0;
}

步骤4:编译并运行

运行结果:

到此这篇关于胶水语言Python与C/C++的相互调用的实现的文章就介绍到这了,更多相关Python与C/C++相互调用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 胶水语言Python与C/C++的相互调用的实现

本文链接: https://www.lsjlt.com/news/10553.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 胶水语言Python与C/C++的相互调用的实现
    准备工作: python:https://www.python.org/downloads/ Dev-C++:https://sourceforge.net/projects/orwelldevcpp/ gcc和g+...
    99+
    2022-06-02
    Python C++调用 Python C语言相互调用
  • C语言与C++项目实现相互调用
    目录前言一、C++项目调用C的静态库二、C项目调用C++的静态库三、总结前言 extern “c”的作用可以实现c语言和c++相互调用。 1.当我们写c语言代...
    99+
    2022-11-12
  • python 与c++相互调用实现
    目录一、c++调用Python1.Python脚本2.C++调用python脚本二、接口方法1.规范化语法三、Pthon调用c++1.基于extern2.基于swig一、c++调用P...
    99+
    2022-11-13
  • golang与c语言是怎么相互调用
    这篇文章主要为大家展示了“golang与c语言是怎么相互调用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“golang与c语言是怎么相互调用”这篇文章吧。go语言调用c语言以下为一个简短的例子:...
    99+
    2023-06-21
  • C语言栈与队列相互实现详解
    目录一、本章重点二、队列实现栈三、栈实现队列四、解题思路总结一、本章重点 用两个队列实现栈用两个栈实现队列解题思路总结 二、队列实现栈  我们有两个队列:  ...
    99+
    2022-11-13
  • C语言栈与队列怎么相互实现
    本篇内容介绍了“C语言栈与队列怎么相互实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、本章重点用两个队列实现栈用两个栈实现队列解题思路...
    99+
    2023-06-29
  • 怎么实现C#与Lua相互调用
    这篇文章主要介绍“怎么实现C#与Lua相互调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么实现C#与Lua相互调用”文章能帮助大家解决问题。一、编译Lua动态链接库1. 编译Windows下使...
    99+
    2023-06-30
  • C++如何实现与Lua相互调用
    今天小编给大家分享一下C++如何实现与Lua相互调用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。概述从本质上来看,其实说是...
    99+
    2023-07-05
  • Python与C之间的相互调用(Python C API及Python ctypes库)
    问题,需要实现全局快捷键,但是是事实上Qt并没有对全局快捷键提供支持,那么用Qt的话就只能通过Win32Api来完成了,而我,用的是PyQt,还需要用Python来调用win32 API,事实上,都没有什么难的。因为Python如此的流行,...
    99+
    2023-06-05
  • C++实现与Lua相互调用的示例详解
    目录概述示例C++调用lua编译lua流程运行lua调用C++解释运行调用语义概述 从本质上来看,其实说是不存在所谓的C++与lua的相互调用。lua是运行在C上的,简单来说lua的...
    99+
    2023-05-13
    C++ Lua相互调用 C++ Lua 调用 C++ Lua
  • Go与C语言的互操作实现
    目录一、Go调用C代码的原理二、在Go中使用C语言的类型1、原生类型数值类型指针类型字符串类型数组类型2、自定义类型枚举(enum)结构体(struct)联合体(unio...
    99+
    2022-06-07
    GO 互操作 C语言
  • C语言数据结构之栈与队列的相互实现
    目录一、用对列实现栈代码实现二、用栈实现队列代码实现一、用对列实现栈 题干要求: 细节分析:队列是先进先出; 要实现的栈是先进后出。 解题思路:假设:先用一个队列储存数据 N 个,...
    99+
    2022-11-13
  • python模块与C和C++动态库相互调用实现过程示例
    目录Python调用C/C++1、Python调用C动态链接库C语言文件:pycall.cgcc编译生成动态库libpycall.soPython调用动态库的文件:pycall.py...
    99+
    2022-11-12
  • C语言实现十六进制与二进制的相互转换
    目录十六进制->二进制二进制->十六进制本文中的代码可以将文件中的十六进制存储与二进制存储相互转换。 十六进制->二进制 原理是:每两位存储为一个字符(char)保...
    99+
    2022-11-13
    C语言 十六进制转二进制 C语言 二进制转十六进制 C语言 二进制 十六进制
  • C语言中QString与QByteArray互相转换的方法
    目录[1] QString与QByteArray互相转换的方法QString转QByteArray方法QByteArray转QString方法QByteArray类同样不以&rsqu...
    99+
    2023-05-20
    C语言 QString与QByteArray QString QByteArray
  • c语言实现两个值互相交换的函数
    c语言中实现两个值互换的函数。 1、 #include <stdio.h> void swap(int n1, int n2) { int tmp; ...
    99+
    2022-11-12
  • 【开发语言】C语言与Python的互操作详解
    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头...
    99+
    2023-09-09
    开发语言 c语言 python
  • C语言数据结构之栈与队列怎么相互实现
    本篇内容介绍了“C语言数据结构之栈与队列怎么相互实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、用对列实现栈题干要求:细节分析:队列是...
    99+
    2023-07-02
  • 原生实现C#与Lua相互调用方法(Unity3D可用)
    目录引言一、编译Lua动态链接库1. 编译Windows下使用的DLL文件2. 编译Android下使用的SO文件二、编写C#使用的API1. 动态链接库在Unity中的存放位置。2...
    99+
    2022-11-13
  • c语言如何实现两个值互相交换的函数
    小编给大家分享一下c语言如何实现两个值互相交换的函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!c语言中实现两个值互换的函数。#include <...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作