VS笔记——dll动态链接文件的生成及python调用

环境:

  • VS2017
  • 64位python IDE

提前声明

  • 本帖仅实现简单的加减函数封装成dll,并且使用python调用,显示结果。
  • 需要注意的是python只能调用C语言封装的dll文件,并且由于使用的python IDE为64位的,还需要一些配置,以下会有说明

DLL文件的生成

1.配置VS64位平台

    生成,输出时选择使用X64

    VS笔记——dll动态链接文件的生成及python调用_第1张图片

    若没有X64,可参考: 使用VS在64位平台下编译代码,生成64位dll

2.创建工程

新建win32 dll项目

VS笔记——dll动态链接文件的生成及python调用_第2张图片

VS笔记——dll动态链接文件的生成及python调用_第3张图片

VS笔记——dll动态链接文件的生成及python调用_第4张图片

编写自己的文件

最终目录如下

VS笔记——dll动态链接文件的生成及python调用_第5张图片

添加一个test.h的文件,其内容和test.cpp内容如下:

#pragma once
#ifndef TEST_H
#define TEST_H

extern "C" __declspec(dllexport)int add(int x, int y); //注意"C"代表使用C语言封装
extern "C" __declspec(dllexport)int sub(int x, int y);

#endif
//test.cpp
#include "stdafx.h"

#include "stdafx.h"
#include"test.h"

int add(int x, int y)
{
	return x + y;
}

int sub(int x, int y)
{
	return x - y;
}

生成dll

VS笔记——dll动态链接文件的生成及python调用_第6张图片

VS笔记——dll动态链接文件的生成及python调用_第7张图片

    到X64/Debug目录中查找如下,其中dll和lib文件是我们需要的文件

VS笔记——dll动态链接文件的生成及python调用_第8张图片

python调用

代码:

import ctypes

if __name__ == '__main__':
    dll = ctypes.cdll.LoadLibrary
    lib = dll("test.dll")
    print(lib.add(12,4))
    print(lib.sub(123,7))

结果:

参考博客

使用vs封装c++成dll和lib

VS2012生成C的dll并调用以及Python调用C的DLL

你可能感兴趣的:(python)