【Cmake】在Windows下用Cmake构建C++工程项目——python调用dll——5

 一. 准备工作

1)在D:\vs_test\cmake_test目录下,新建t3文件夹;

2)在t3下,新建目录lib、build和文件CMakeLists.txt。lib是用来存放源文件的。

3)在目录lib下,新建CMakeLists.txt和hello.cpp、hello.h

t3目录下的CMakeLists.txt文件内容:

PROJECT(HELLOLIB)
ADD_SUBDIRECTORY(lib bin)

lib/CMakeList.txt 内容:

SET(LIBHELLO_SRC hello.cpp)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})

lib/hello.cpp 内容:

#include "hello.h"
 
extern "C" {

    __declspec(dllexport) int add(int a, int b);

}

void HelloFunc()
{
    std::cout << "Hello World !\n";
    while (1);
}

int add(int a, int b)
{
	return a+b;
}

extern "C" {

    __declspec(dllexport) int add(int a, int b);

}

一定要记得加这一步,不然python访问不到函数。

lib/hello.h 内容:

#ifndef HELLO_H
#define HELLO_H
 
#include <iostream>
using namespace std;
 
void HelloFunc();
int add();
 
#endif

二. 编译共享库

具体的构建方法参考我第一篇文章:【Cmake】在Windows下用Cmake构建C++工程项目——cmake 的 helloworld——1

cmake编译成功之后,可以看到 t3\build\bin\Debug 目录下生成了动态库 hello.dll 

注意:如果是在Linux环境下,那么得到的就是 hello.so,这就是我们期望的共享库。

三.Python访问dll

新建一个main.py函数

from ctypes import *

dll = CDLL("hello.dll")
c = dll.add(20,23)
print(c)

代码结构如下 

参考

Python调用dll_yangzhichao_csdn的博客-CSDN博客_python 调用dll

把c++的exe工程编译为动态库dll静态库lib,并实现调用(超详细)_耳东广大木木的博客-CSDN博客_exe编译成dll

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值