C/C++幾乎無所不能,從功能上講這是沒錯的。而從實際效用上講則不盡然。C/C++,包括MSVC,可以開發出很漂亮的界面,但對個人卻很難做到快速開發。這就需要有其他一些語言,和C/C++結合起來,聯合進行應用程序開發。比如利用Python。
1.安裝Python、Eclipse、MinGW和Cygwin
Linux中的應用,網上有很多教程。但在Windows中的並不多。要想利用Python/C API進行開發。首先需要在Windows裏安裝Python。我推薦裝Pythonxy。這裏麪包含了Python本身,另外還有很多廣爲應用的Python可選模塊,而且它提供Windows下的exe安裝文件。首先從http://www.pythonxy.com/download.php中下載Windows安裝版。然後從中選擇自己需要的模塊。這裏,基本可以按默認的來。爲了確保以下所講例子能很好地運行,一定選上SciPy、PyQt、Matplotlib、gnuplot、Pywin32。然後在Eclipse中,至少選中Eclipse和CDT。在others中至少選中MinGW。上面的Select type of install選custom,下面的路徑選擇中,全把路徑C盤改爲D盤,這樣,會將程序安裝到D:\Program Files\pythonxy下,而將庫文件和頭文件等放到D:\Python25下。然後next直至安裝結束。
開發環境選用Eclipse,當然也可以選Visual Studio。但是既然Python採用的是近似於GPL的一種open source語言,而又有唾手可得強大的open source IDE Eclipse,那麼爲什麼還要去選Microsoft這種商業軟件。不過,關於在Visual Studio 2008裏的應用,也會在後面提到。
由於Python/C API使用的是GCC作爲編譯器,而我們之前在裝Pythonxy時,已經選裝了Eclipse CDT和MinGW。這樣我們就幾乎可以應用Eclipse作爲Python/C程序開發環境。只需要再裝好Cygwin就行。
從http://www.cygwin.com/下載然後安裝Cygwin到比如D:\cygwin,然後添加D:\cygwin\bin到環境變量(my computer---右鍵---àproperties----àAdvanced----àEnviroment Variables,然後選中PATH----àEdit,在上面添加D:\cygwin\bin)。打開命令行cmd,然後輸入ls,若能輸出路徑Cygwin安裝完成。輸入gcc回車,若輸出gcc: no input files,則說明MinGW也正確安裝。接下來就可以配置Eclipse CDT了。
2.配置Eclipse IDE for Python
打開Eclipse CDT,在Window---àpreferences----àC/C++----àNew CDT project wizard----àMakefile Project----àBuilder Settings----àBuild command編輯框裏的make改爲mingw32-make。若無法修改,需要先勾掉上面的Use default build command。然後ok。
新建一個工程。從File----ànew----àProject----àC++----àC++ Project----àNext----à輸入Project Name----à選擇一個location----àExecutable----àHello world C++ Project----àFinish。
添加Python頭文件路徑。在菜單上Project----àProperties----àC/C++ General----àPaths and Symbols----àIncludes----àGNU C++----àAdd----à添加D:\Python25\include
添加Python庫文件路徑。同樣Project----àProperties----àC/C++ General----àPaths and Symbols----àLibrary Paths----àAdd----àD:\Python25\libs
添加Python庫文件。同樣Project----àProperties----àC/C++ Build----àSettings----àTool Settings----àMinGW C++ Linker----àLibraries----àLibraries(-l)----àAdd: python25
這樣就對Eclipse CDT和新Project配置完畢。
3.添加Python代碼
最簡測試Python embedded到C++ program裏的程序。如下
#include "Python.h"
#include <iostream>
using namespace std;
int draw_FromFile();
int main(int argc, char *argv[])
{
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
Py_Initialize();
draw_FromFile();
cout<<"End of the program!"<<endl;
Py_Finalize();
return 0;
}
int draw_FromFile()
{
char *filename = "D:\\sinoid.py ";
PyObject* PyFileObject = PyFile_FromString(filename, "r");
PyRun_SimpleFile(PyFile_AsFile(PyFileObject), filename);
return 0;
}
然後在D盤下創建Python文件D:\sinoid.py,其內容爲
from pylab import *
x=arange(0,2,0.01)
y=2*sin(2*pi*(x-1/4))
plot(x,y)
xlabel('x-axis')
ylabel('y-axis')
title(r'$y=2\sin (2\pi(x-1/4))$')
show()
這個python文件就是類似於MatLab裏的Plot,繪製一個正弦曲線。首先保存對源文件所做的修改,然後從Eclipse菜單Project下選Bulid Project,然後可以從IDE下面console窗口看到輸出:
Build complete for project …
Time consumed: 1531 ms.
然後從菜單Run下選Run或Ctrl+F11,運行後彈出Python繪圖窗口:
和Matlab很相似,而且完全使用開源軟件,開發快速。
如果一定想要在Visual Studio中應用Python/C API,需要注意以下幾點:
1、Project Property中加入了Additional Library Directory、Additional Include Directory和Additional Dependencies後,如果你是在Debug mode下,你會遇到cannot open file ‘python25_d.lib‘問題。這需要你下載Python源文件,然後自己在MSVC下編譯得到python25_d.lib和python25_d.dll,然後把這兩個文件放到你Project的workspace下,這才能編譯鏈接通過。
2、運行時,會有no module named _socket problem等類似問題,使得Python的部分模塊無法加載,從而無法實現全部功能。
3、事實上你只有在release mode中工作才能得到Python完整的功能。這是因爲你使用的是python25_d.lib,一個Debug版的Python庫。
所以,還是用Eclipse CDT吧。
kpsun.blog.163.com/blog/static/2760055200991112738449/
本文轉載於:http://skpsun.blog.163.com/blog/static/2760055200991112738449/