我用的 python版本是2.7.12:

Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32

1, 下载Swig

下载地址:http://www.swig.org/download.html,我下载了最新版本swigwin-4.0.0. 下载后直接解压,把 swig.exe 所在目录添加到系统环境变量 Path中。在 Command中输入 swig -version,如果出现版本号说明添加成功。

2,编写 c++代码

头文件 example.h

 1 #pragma once
 2
 3 #include <iostream>
 4 using namespace std;
 5
 6 class Example {
 7 public:
 8
 9     const char* getString();
10     void setString(const char* str);
11 };

example.cpp

 1 #include "example.h"
 2
 3 void Example::setString(const char* str)
 4 {
 5     cout<<str<<endl;
 6 }
 7
 8 const char* Example::getString()
 9 {
10     return "hello";
11 }

3,编写 example.i 文件

1 %module Example
2
3 %{
4 #include "example.h"
5 %}
6
7 %include "example.h"

4,编写 setup.py 文件

1 from distutils.core import setup,Extension
2 test_module = Extension('_Example',sources = ['example_wrap.cxx','example.cpp'],)
3 setup(name = 'example',
4       version = '0.1',
5       author = '',
6       description = 'Simple swig example',
7       ext_modules = [test_module],
8       py_modules = ['example'],
9       )

5,运行命令 regedit 打开注册表,查看下列路径是否有该键值  productdir:VS安装目录\VC\Auxiliary\Build,如果没有则新建目录并添加键值。这个目录"VS安装目录\VC\Auxiliary\Build"其实是 vcvarsall.bat 文件所在目录,python要用到vcvarsall.bat。

\HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC

因为我的VS安装在c:\vs2019,所以我设置 productdir:c:\vs2019\VC\Auxiliary\Build

6, 打开 Command,cd 到 example.i  文件所在目录,确保 c++文件和 example.i  文件在同一个目录下;输入下列命令:

swig -python -c++ example.i

产生文件 Example.py 和 example_wrap.cxx。

7,Command继续输入命令:

python2 setup.py build_ext --inplace

产生 _Example.pyd 文件。如果没有产生这个文件,查看错误原因,如果第 5 步没成功提示 cannot find vcvarsall.bat

8,Command 输入 Python2 进入 python环境:

>>> from Example import *
>>> ex = Example()
>>> ex.getString()
'hello'
>>> ex.setString("hello")
hello

说明:最好不要通过 Visual studio 来产生 pyd 文件,因为 python与 VC版本不匹配会出现各种错误提示。比如2.7.12需要MSC v.1500即VS2008版本。

MS VC++ 14.0 _MSC_VER = 1900 vs2015
MS VC++ 12.0 _MSC_VER = 1800 vs2013的编译器他的平台是v120
MS VC++ 11.0 _MSC_VER = 1700 vs2012的编译器他的平台是v110
MS VC++ 10.0 _MSC_VER = 1600 Visual C++ 2010
MS VC++ 9.0 _MSC_VER = 1500 Visual C++ 2008
MS VC++ 8.0 _MSC_VER = 1400 Visual C++ 2005
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100

转载于:https://www.cnblogs.com/gujf2016/p/11282202.html

Windows10系统Python2.7通过Swig调用C++过程相关推荐

  1. Windows10安装python2.7.15版本,附过程问题解决方案

    1. 安装python2.7.0版本. 一开始想着装2.7.0就行,可以看这个博客https://blog.csdn.net/weixin_43790276/article/details/89439 ...

  2. Windows10系统忘记登录密码解决办法

    Windows10系统忘记登录密码解决办法 1. 前言 1.1. 环境准备 1.2. 官方PE安装系统 2. 虚拟机配置 2.1. 编辑虚拟机 2.2. 进入固件 2.3. 编辑启动项顺序 2.4. ...

  3. 系统升级后找不到网络计算机,Windows10系统局域网中共享计算机找不到怎么办

    局域网共享可以方便局域网中的计算机自动调用共享文件用打印机等资源,但有用户出现访问不了查看不到其他共享计算机的情况,在Win10极速纯净版系统中,有用户发现升级Win10的无法查看其他计算机和共享,而 ...

  4. c#利用SWIG调用c++dll学习总结【转】

    开发环境: 操作系统:windows 7 IDE:Microsoft Visual Studio Professional 2015 SWIG: 3.0.12 swig的介绍 详细介绍可看官网,一下贴 ...

  5. Windows10系统Qt调试ffmpeg.c

    Qt调试ffmpeg.c 前言 下载FFmpeg 下载FFmpeg-Builds-Win32 下载并安装Qt 创建Qt工程 添加代码 编译ffmpeg.c 解决编译ffmpeg.c的问题 调试ffmp ...

  6. win10局域网中只能发现部分计算机,Windows10系统局域网中共享计算机找不到怎么办...

    局域网共享可以方便局域网中的计算机自动调用共享文件用打印机等资源,但有用户出现访问不了查看不到其他共享计算机的情况,在Win10极速纯净版系统中,有用户发现升级Win10的无法查看其他计算机和共享,而 ...

  7. Windows10系统下Visual Studio 2017 使用VISP视觉库中的AprilTags进行实时姿态识别

    Windows10系统下Visual Studio 2017 使用VISP视觉库中的AprilTags进行实时姿态识别 前言 环境配置 报错记录 相关C++代码介绍 代码参数说明 运行结果 运行速度 ...

  8. Windows10系统下Nacos下载安装+简单示例

    Windows10系统下Nacos版本与下载链接 版本号 下载地址 2.0.1 https://github.com/alibaba/nacos/releases/tag/2.0.1 1.4.2 ht ...

  9. xp系统vba服务器,xp系统下通过Excel 2013调用VBA的方法

    默认情况下,windowsxp系统用户打开Excel 2013的话,都是无法看到VBA的开发工具及编辑器的,需要手动操作才能调用出来.接下来,系统城小编就为大家分享xp系统下通过Excel 2013调 ...

最新文章

  1. 2、redis.conf基本配置项说明
  2. 服务器端口进程未响应,Tomcat正在运行,但8080端口未响应
  3. 中国爬虫违法违规案例汇总
  4. 极简_Gradle多Module项目组建
  5. RabbitMQ死信队列代码架构图
  6. vue 入口main.js 调用app.vue 入口页面以及触发第三方登陆校验
  7. fork linux 低权限,linux/Unix下python的fork详解及应用举例
  8. 写出一下Java方法对应的签名_Java中的方法签名是否包含其返回类型?
  9. 控制小灯闪烁次数_Luat系列官方教程2:控制LED小灯
  10. js 邮箱、11位手机正则
  11. 帮助小姐姐破解加密压缩包(一)——暴力破解字典生成
  12. java sql拼接字符串_java字符串拼接(SQL)
  13. appium 学习教程
  14. python给excel排序_python初学—-实现excel里面读数据进行排序
  15. matlab 模拟水滴,Keyshot tips :使用 Keyshot 程序贴图模拟水滴效果
  16. 【子衿技术】DBA进阶之路
  17. uniapp uni-swipe-action 滑动删除
  18. 如何在 Spring Boot 优雅关闭加入一些自定义机制
  19. Flutter实现京东淘宝电商商品详情页效果
  20. MathType 快捷键隐藏章节符

热门文章

  1. linux新建用户,用户组,以及权限的分配(摘自博客园)
  2. 搭建分布式hadoop2.x集群
  3. 1.SoapUI接口测试--创建项目
  4. [C#]async和await刨根问底
  5. windows mobile开发循序渐进(6)windows mobile device center 使用问题
  6. JS中的数据类型转换:String转换成Number的3种方法
  7. vue --- vue-router
  8. IOC和DI的区别详解
  9. 生产环境中Oracle常用函数总结
  10. JNI学习积累之一 ---- 常用函数大全