CSDN学习社区
python调用c++ dll (依赖库) python调用c++ dll (依赖库)
1 创建C++工程生成dll库编译生成2pythoN调用dll库123456789101112131415161718#!/bin/env python# -*- coding: utf-8 -*-...
1 创建C++工程生成dll库




编译生成

2pythoN调用dll库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
#!/bin/env python
# -*- coding: utf-8 -*-
import ctypes
#获取路径
import os
#pathnow=os.getcwd() #获取当前路径
pathnow=os.path.abspath('ConsoleApplication1.dll') #获取指定文件名字的全路径
pathnow=pathnow.replace('\\','/') #路径替换
#print(pathnow)
#调用库
#lib_add= ctypes.cdll.LoadLibrary(pathnow)
lib_add= ctypes.cdll.LoadLibrary('./ConsoleApplication1.dll')
print (lib_add.add(1,3))
|
命令行进入工程目录,运行
python .\python.py

例程2 封装成类调用+参数修改
C++打包库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 |
#include < iostream >
using namespace std;
//-------------------C++函数定义---------------------
class TestLib {
private:
int number = 0;
public:
void set_number(int num) {
number = num;
}
int get_number() {
return number;
}
};
//-------------------C++函数打包成C接口---------------------
extern "C" {
TestLib obj;
extern "C" _declspec(dllexport) int get_number() {
return obj.get_number();
}
extern "C" _declspec(dllexport) void set_number(int num) {
obj.set_number(num);
}
}
|
python调用库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
#!/bin/env python
# -*- coding: utf-8 -*-
import ctypes
#获取当前路径
import os
#pathnow=os.getcwd() #获取当前路径
pathnow = os.path.abspath( 'ConsoleApplication1.dll' ) #获取指定文件名字的全路径
pathnow = pathnow.replace( '\\',' / ') #路径替换
#print(pathnow)
#调用库
#linux下调用so
#lib = ctypes.cdll.LoadLibrary("./libpycallclass.so")
#win10下调用dll
lib = ctypes.cdll.LoadLibrary( './ConsoleApplication1.dll' )
print (lib.get_number()) #0
lib.set_number( 10 )
print (lib.get_number()) #10
|

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!
所有评论(0)