vs2019生成64位dll(动态链接库)并用python3.7调用
说明:windows动态链接库相当于linux下的共享库。同时,由于一般安装的python都是64位的,而生成的动态链接库是32位的,这就导致动态链接库在pyhon中调用的时候出现不匹配的问题。网上大部分的解决方法都是安装32位的python,太过麻烦,为什么不能生成64位的dll呢1.工具软件:vs2019,python3.7,pycharm语言:c++,python2.64位d...
说明:windows动态链接库相当于linux下的共享库。同时,由于一般安装的python都是64位的,而生成的动态链接库是32位的,这就导致动态链接库在pyhon中调用的时候出现不匹配的问题。网上大部分的解决方法都是安装32位的python,太过麻烦,为什么不能生成64位的dll呢
目录
1.工具
软件:vs2019,python3.7,pycharm
语言:c++,python
2.64位dll文件的生成
首先我们打开vs2019,创建项目、项目类型选库,然后选动态链接库。
然后创建项目:
项目里面默认有几个文件:
如果没有的话我们可以自己创建pch.h和pch.cpp.
我们编辑pch.h和pch.cpp分别如下:
pch.h
// pch.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"
extern "C" _declspec(dllexport) int myAdd(int a, int b);
extern "C" _declspec(dllexport) int myMax(int a, int b);
#endif //PCH_H
pch.cpp
// pch.cpp: 与预编译标头对应的源文件
#include "pch.h"
#include<iostream>
using namespace std;
int myAdd(int a, int b)
{
return a + b;
}
int myMax(int a, int b)
{
return a > b ? a : b;
}
设置生成64位得dll:
点击项目-》属性-》配置管理器,设置成x64,
然后设置目标计算机,也在属性里面,如下图:
点击运行,可以在项目目录下发现x64文件夹,可以发现里面存在dll,这个dll就是64位的。
3.python使用dll
一般情况下我们的python都是64位的,首先将dll文件拷贝到pyhon项目中,然后编写代码如下:
from ctypes import *
# 将dll文件拷贝到目录下
#TestDll.dll文件里面有myADD方法
dll = windll.LoadLibrary('TestDll.dll')
a = dll.myAdd(2,5)
print(a)
打印如下:
可以发现已经成功的使用dll文件里面的myAdd方法。
声明:本文章参考了网上一些文章,在他们的基础上总结了一些64位dll的创建与使用。地址忘了,在此感谢。
更多推荐
所有评论(0)