首页 > 编程语言 >VS2015 与 ctypes 联合编程

VS2015 与 ctypes 联合编程

时间:2023-09-23 22:36:18浏览次数:39  
标签:文件 编程 lib VS2015 dll ctypes hello

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()

 

标签:文件,编程,lib,VS2015,dll,ctypes,hello
From: https://www.cnblogs.com/hanxinle/p/17724388.html

相关文章

  • Python CGI编程
    什么是CGICGI目前由NCSA维护,NCSA定义CGI如下:CGI(CommonGatewayInterface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。网页浏览为了更好的了解CGI是如何工作的,我们可以从在网页上点击一个链接或URL的流程:1、使用你的浏览器访......
  • 《Unix/Linux系统编程》教材学习笔记第十章
    chapter10sh编程sh脚本包含sh语句的文本文件,命令解释程序sh要执行该语句。eg.mysh.sh#!/bin/bash#commentlineechohello使用chmod+xmysh可以执行该文件。#!开头一般称为shebang,若未指定,则将运行默认sh,即Linux中的/bin/bash。sh脚本与C程序比较不难看出两者有......
  • windows系统编程(win32)
    一、编程环境操作系统:windows10-1809(17763.1557)-x64;windowskits:C:\ProgramFiles(x86)\WindowsKits\10\Include\10.0.19041.0\sharedvisualstudio2019:C:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Community\VC\Tools\MSVC\14.29.30133\include......
  • Linux服务器编程 基本API与概念
    Linux服务器编程基本API与概念基本参数和结构体协议族参数:PF_UNIX,PF_INET,PF_INET6;地址族参数(sa_family_t):AF_UNIX,AF_INET,AF_INET6;服务类型参数:SOCK_STREAM流服务;SOCK_UGRAM数据报服务;与SOCK_NONEBLOCK相与非阻塞类型;与SOCK_CLOEXEC相与fork子进程在子进程......
  • 【Java 基础篇】Java继承:打开面向对象编程的大门
    继承是面向对象编程(Object-OrientedProgramming,OOP)中的一个重要概念。在Java中,继承允许一个类(子类)从另一个类(父类)继承属性和方法。这种机制使得代码重用、扩展和维护变得更加容易。本篇博客将深入探讨Java中继承的概念、语法和最佳实践,适用于初学者,让你轻松理解和运用继承的强大功......
  • 【Java 基础篇】Java 面向对象详解:面向对象编程的艺术
    如果你正在学习Java编程,面向对象编程(Object-OrientedProgramming,OOP)是一个不可或缺的概念。Java是一种面向对象的编程语言,这意味着它的编程范式基于对象、类和继承。在本篇博客中,我们将深入探讨Java中面向对象编程的核心概念,从什么是对象开始,逐步介绍类、继承、封装、多态等重要概......
  • 编程基础C Assignments
    编程基础CAssignments喵嘤,发现舍友和同学对于课堂留的一些作业有疑惑,因此准备发一篇博客来解释一下每次课的作业。但是博客园神奇的系统,“文章”是不支持显示到主页上的,只有“随笔”可以。因此建立这个目录,它的主要作用是可以跳转到每一次作业的解释文章上面。编程基础C922A......
  • 【Java 基础篇】Java 泛型:类型安全的编程指南
    在Java编程中,泛型是一项强大的特性,它允许您编写更通用、更安全和更灵活的代码。无论您是初学者还是有经验的Java开发人员,了解和掌握泛型都是非常重要的。本篇博客将从基础概念一直深入到高级应用,详细介绍Java泛型。什么是泛型?泛型是Java编程语言的一项特性,用于实现通用性更......
  • Python functools模块:提升函数式编程的5个常用函数
    Python的functools模块是标准库中的一个强大工具,提供了一系列函数,用于优化和增强函数式编程的能力。这些函数可以帮助我们处理函数、操作装饰器、缓存结果等。介绍functools模块中的五个常用函数,包括 partial、wraps、lru_cache、reduce和compose,并提供相关的代码示例,帮助更好......
  • 基于事件的 JavaScript 编程:构建交互式 Web 应用程序
    了解事件 1.事件类型JavaScript支持多种事件类型。一些最常见的包括:鼠标事件:这些事件由用户与鼠标的交互触发,例如单击、悬停和拖动。键盘事件:这些事件在用户与键盘交互时发生,例如按下某个键或松开某个键。表单事件:与表单元素相关的事件,例如提交表单或更改输入字段的值。......