当前位置: 首页 > news >正文

mingw如何制作动态库附python调用

1.mingw和msvc

g++ -fpic HelloWorld.cpp -shared -o test.dllg++ -L . -ltest .\test.cpp

注意-L后面的.挨不挨着都行,-l不需要-ltest.dll,只需要-ltest 

2.dll.cpp

extern "C" {__declspec(dllexport) int __stdcall add(int a, int b) {return a + b;}
}

3.dll.h

extern "C" {__declspec(dllexport) int __stdcall add(int a, int b);
}

4.test.c:必须要 #include "./HelloWorld.h",python则不需要

#include <stdio.h>
#include "./HelloWorld.h"extern int add(int a, int b);int main(){printf("\n[%d]\n", add(12, 5));return 0;
}

5.python:main.py:经常找不到库,如何解决

1)绝对路径

2)os.add_dll_directory包含库的搜索路径

3)3.8以上版本,还是找不到就需要加上winmode=0

import ctypes  
import osa = ctypes.WinDLL( 'test.dll' , winmode=0).add(12, 5)
print(a)os.add_dll_directory("D:\\code\\thirdparty\\Chess\\cpp")
a = ctypes.WinDLL("test.dll").add(12, 5)
print(a)

6.python如果是cdecl就用CDLL()函数

http://www.lryc.cn/news/368666.html

相关文章:

  • Vue学习|Vue快速入门、常用指令、生命周期、Ajax、Axios
  • Python基础教程(八):迭代器与生成器编程
  • Oracle10.2.0.1冷备迁移之_数据文件拷贝方式
  • 智能合约中外部调用漏洞
  • 转型AI产品经理(4):“认知负荷”如何应用在Chatbot产品
  • 【C++11】常见的c++11新特性(一)
  • 牛客周赛 Round 46 题解 C++
  • 9.3 Go 接口的多态性
  • Java通过字符串字段匹配形成树形结构
  • 数字孪生智慧水利:精准管理与智能决策的新时代
  • 基于ChatGLM3的本地问答机器人部署流程
  • 归并排序——逆序数对的统计
  • 基于截图和模拟点击的自动化压测工具开发(MFC)
  • 力扣每日一题 6/10
  • [知识点] 内存顺序属性的用途和行为
  • JAVA Mongodb 深入学习(二)索引的创建和优化
  • 转让北京劳务分包地基基础施工资质条件和流程
  • Python基础——字符串
  • AP的数据库性能到底重要吗?
  • Vue3【二】 VSCode需要安装的Vue语法插件
  • 设置路径别名
  • 人事信息管理系统(Java+MySQL)
  • Python 中生成器与普通函数的区别
  • 最小栈、栈的弹出(C++)
  • 20240607每日通信--------VUE3前端引入scoket-io,后端引入Netty-SocketIO,我成功了,希望一起交流沟通
  • Tomcat源码解析(八):一个请求的执行流程(附Tomcat整体总结)
  • python使用gdb进行堆栈查看与调试
  • 【DevOps】路由与路由器详细介绍:原理、功能、类型及应用场景
  • 【WP|9】深入解析WordPress [add_shortcode]函数
  • Qt QStackedWidget类详细分析