SWIG VS2017安装配置 tcy
生活随笔
收集整理的這篇文章主要介紹了
SWIG VS2017安装配置 tcy
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.Windows10安裝SWIG:
1)下載swigwin-4.0.2.zip 64位軟件包,解壓縮拷貝到:C:\swigwinhttps://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.2/swigwin-4.0.2.zip/download2)設置環境變量:C:\swigwinPYTHON_INCLUDE 包含Python.h目錄PYTHON_LIB 包含Python.lib庫目錄 3)測試:C:\Users\Administrator>swig --help 4)啟動Visual C ++
2.VS2017配置:2.1.通用VS2017配置(必須Release 平臺:X64)1)文件--新建項目--Visual C++--其他:空項目
2)右側屬性管理器--項目名稱上右鍵--添加新屬性表--SwigWin.props--點擊添加
3)打開SwigWin屬性頁:a).通用屬性--VC++目錄:添加路徑C:\ProgramData\Anaconda3\Lib\site-packages\numpy\core\include;C:\opencv\build\include;C:\opencv\build\include\opencv2;C:\ProgramData\Anaconda3\include;C:\Program Files\MVTec\HALCON-18.11-Progress\include;C:\Program Files\MVTec\HALCON-18.11-Progress\include\halconcpp;b).C/C++--常規--附加包含目錄:添加路徑C:\ProgramData\Anaconda3\Lib\site-packages\numpy\core\include;C:\opencv\build\include\opencv2;c).C/C++----預處理器--預處理定義:_WINDLL;__WIN32__(我的沒有添加官網建議添加)e).鏈接器--常規--附加庫目錄:C:\opencv\build\x64\vc15\lib;C:\ProgramData\Anaconda3\libs;C:\Program Files\MVTec\HALCON-18.11-Progress\lib\x64-win64;f).鏈接器--輸入--附加依賴項:python3.lib;halcon.lib;halconcpp.lib;opencv_world440.lib;
2.2.添加DLL項目
1.1)解決方案名稱上右鍵--添加--新建項目--空項目--確定
1.2)新建項目名稱上右鍵--屬性--配置屬性--常規:常規:目標文件擴展名:.pyd項目默認值:配置類型:dll1.3)項目添加 Hello.h和 Hello.cpp文件
1.4)項目添加 Hello_Swig.i1.5)配置 Hello.i(可選)Hello.i-->右鍵屬性-->打開Hello.i文件屬性:1)選擇常規->項類型->自定義生成工具 -->點擊應用2)然后選擇自定義生成工具->常規->命令行:swig -c++ -python -outdir $(Outdir) %(Identity) 說明:swig tool輸出:$(ProjDir)\$(InputName)_wrap.cxx;%(Outputs) 附加依賴項:鏈接對象:是將輸出視為內容:否3)右鍵選擇.i文件,選擇編譯(首選)4)將Hello_wrap.cxx附件到dll項目的源文件中1.6)運行swig (1.5,1.6任選其一)-c++ -python Hello_Swig.i 1.7)編譯動態庫VS2017--生成--生成解決方案(或:--生成--生成”工程名“)1.8)測試:修改"工程名".pyd為_Hello.pyd;將Hello.py,_Hello.pyd拷貝pyCharm運行的文件夾下后測試
3.備注:
3.1.文件:1).文件Hello.h
#pragma once
namespace cpluscplus
{class MathClass{public: int Add(int a, int b);};
}2). Hello.cpp
#include "Hello.h"
namespace cpluscplus
{int MathClass::Add(int a, int b){ return a + b;}
}2.3) 添加SWIG文件 Hello_Swig.i:
%module SWIG_Tutorial1 %{
/* 在包裝代碼中包含頭文件 */
#include "Hello.h"
%} /* 解析頭文件生成包裝代碼 */
%include "Hello.h" 3.2.預處理器
用途:WIN32、_DEBUGE、_UNICODE其實是一些宏定義相當于在本工程所有文件中都寫上:#define WIN32#define _DEBUG#define _UNICODE這樣在不同的配置環境在編譯的結果文件不一樣,從而實現跨平臺======================================================================================
http://www.swig.org/Doc4.0/Sections.html#Sections
4.python測試:# !/usr/bin/env python
# -*- coding: utf-8 -*-# from Swig.Camera import add,HalconClass
import numpy as np
import sys,os,shutildef copyfile(b=True):if b==False:returnpypath=r'C:\Users\Administrator\Desktop\Fastener\Swig'cpath=r'C:\Users\Administrator\Desktop\ProjectSwigWin\x64\Release'filename=r'Example'cfile_py=cpath+'\\'+filename+'.py'cfile_pyd=cpath+r'\ProjectSwigWin.pyd'pyfile_py=pypath+'\\'+filename+'.py'pyfile_pyd=pypath+r'\_'+filename+'.pyd'print(cfile_py)if os.path.isfile(cfile_py):shutil.copyfile(cfile_py,pyfile_py)else:print('not camera.py',cfile_py)returnif os.path.isfile(cfile_pyd):shutil.copyfile(cfile_pyd,pyfile_pyd)else:print('not camera.pyd')returncopyfile()
from Swig import Example as objprint('(',obj.PI,',',obj.VERSION,',',obj.RED,',',obj.GREEN ,',',obj.BLUE,')')
print('(',obj.cvar.NO1,',',obj.cvar.NO2,',',obj.NO3,',',obj.PATH3 ,')')print(obj.cvar.x2)
print(obj.cvar.g_totals)a=obj.getCam(22)
b=obj.getValue(a)
obj.del_p(a)
print(b)a=obj.PeopleType()
# a.age=33
# a.name='Tom'
print(a.age,a.name)
?
下載源代碼:https://download.csdn.net/download/tcy23456/12889522使用說明: 1.在VS2017中修改代碼(也可不修改運行作者的代碼) 2.在Hello.i右鍵編譯 3.Vs中:生成--重新生成解決方案打開pycharm: 運行Swig\test_swig.py注意: 在運行前要修改路徑:我的是將這兩個文件放在桌面C:\Users\Administrator\Desktop 相關環境變量要事先配置好。?
?
?
?
?
總結
以上是生活随笔為你收集整理的SWIG VS2017安装配置 tcy的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac笔记本电脑关闭fn功能的方法
- 下一篇: 阅读笔记:养女儿的四大要点!