VS2015 与 ctypes 联合编程

发布时间 2023-09-23 22:29:27作者: Jack猫

Python 使用的版本是 3.7 - 32bit,使用  VS 2015 开发 dll 文件。  32bit 要求 VS 编译工程的时候必须要选择使用的是 x86 或者是 win32.

 

发现的问题:使用 vs2015 默认的 dll 项目模板,标注的是 Windows 通用的,生成的 dll 不可用,在 Pycharm 中报 126的错误,网络上有提醒可以用 Dependence Walker,拷贝依赖的 .dll 文件到 .py 同路径,这个方法不可行。

 

解决方案:

使用 VS2015 创建空项目,新建一个 main.cpp 文件,填入如下内容

#include <stdio.h>

extern "C" __declspec(dllexport) void hello()
{
    printf("hello python.");
}

 

extern "C" 是因为 ctypes 只能识别 C 的代码,生成解决方案得到Project1.dll 文件(.lib 等其他文件不需要拷贝),拷贝到 pycharm 工程 main.py 路径,该文件内容如下:
print("test start")

from ctypes import *

lib = CDLL("Project1")

lib.hello()