ctypes_入门

建立dll文件

dll:动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32.dll 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于避免代码重用和促进内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。

// Dll2.cpp : 定义 DLL 应用程序的导出函数。   >>>自动生成的,我们要把函数定义再这个文件里
#include "stdafx.h"
#include <stdio.h>
//这里与.C文件唯一不同的就是需要定义被调用的函数,这是规范,如果不定义,在python里永远出现找不到方法的错误
//固定格式,在需要被外部引用函数的前面加上extern "C" int __declspec(dllexport)
extern "C" int __declspec(dllexport) test(unsigned int max_num){
	int count = 0;
	for (unsigned int i = 0; i < max_num; i++) {
		if (i < 2) {
			printf("False\n");
		}
		else if (i == 2) {
			count += 1;
		}
		else {
			for (unsigned int n = 2; n < i; n++) {
				if (i%n == 0) {
					break;
				}
				else if (n == i - 1) {
					count += 1;
				}
			}
		}
	}
	printf("%d\n", count);
	return count;
}

这个错误不要管,我已经确定了py,py_ide所有都是64位的,编译成功既可以

使用dll

from ctypes import cdll
dll="C:/Users/root/Desktop/C/Dll2/x64/Debug/Dll2.dll"
f = cdll.LoadLibrary(dll)
result=f.test(100000)
print(result)


'''
result:接受方法的返回值
f.test(100000):在方法的调用中,会打印dll中test打印的值
'''

猜你喜欢

转载自blog.csdn.net/rookie_is_me/article/details/88997603