python3.8中调用vs2017中使用c生成的dll动态链接库

  1. 首先通过vs2017制作动态链接库project1.dll

打开vs–>file–>new–>project–>installed–>Visual c++ -->Window Desktop–>Window Desktop Wizard(windows桌面向导)
在这里插入图片描述
在这里插入图片描述
然后点击ok,就会生成相应的空项目。
在Header Files中创建一个test.h的头文件,并在Resource Files中创建一个test.cpp

//test.h
#pragma once
extern "C" __declspec(dllexport) int add(int, int);//如果你的代码是纯c风格的话,可以不用加extern "C"
//test.cpp
#include"test.h"
#include<stdio.h>
#include<iostream>

int add(int a, int b) {
	printf("hello python call dll\n");
	std::cout << "hello world" << std::endl;
	return a + b;
}

然后进行生成,注意:如果你的python是64位,那么你的vs生成时应该选择x64,位数应该一致
在这里插入图片描述
然后将生成的.dll文件拷贝到你的python项目中,或者使用绝对路径进行访问,这个随你。
我是用拷贝到python项目下:
这个是我的机器生成的文件:
在这里插入图片描述

在这里插入图片描述
python使用dll动态库使用的是ctypes模块,所以需要进行导入,然后加载相应的dll文件

# test.py
import ctypes

test = ctypes.cdll.LoadLibrary("./Project1.dll")
print(test.add(12,32))

"""
执行结果:
hello python call dll
hello world
44
"""

其中test接受动态库加载返回的句柄,通过它来进行访问dll中的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值