Windows10系统Python2.7通过Swig调用C++过程
我用的 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++过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT中的pro文件
- 下一篇: Windows系统Python直接调用C