成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Pyhon腳本解釋器在Windows應用中的實際操作方法

開發 后端
如果你想了解在Windows應用中如何嵌入Python腳本解釋器的相關實際操作方案時,下面的文章你就可以點擊觀看了,希望你會從中學會很多的東西。

你對Python腳本解釋器的實際相關應用感興趣嗎?而今天我們的文章主要向你介紹的是在Windows應用中如何嵌入Python腳本解釋器,以及實際操作的六種方案的具體介紹。以下是文章內容的具體介紹。

下面文件名中出現的'##'是被縮寫的版本號.舉例來說,Python 2.1.1,##將會被21替換. 在Windows應用中嵌入Python腳本解釋器的方法可以匯總如下:

1.不要直接把Python建立在你的.exe文件中。在Windows中,Python應該以DLL的形式引入,從而可以使用Python的 DLL's。 (第一個要點)。應該連接到Python##.dll;你可以靜態或動態地連接到Python。靜態意味著要連接python15.lib。缺點是當Python##.dll不存在的時候你的應用程序將不能運行. 。

 一般提示: Python##.lib是python##.dll對應的所謂"引入庫",它僅僅為連接定義符號。 Borland提示:首先使用Coff2Omf.exe把Python##.lib轉換成OMF格式。#t#

連接簡化了連接選項,因為一切都發生在運行時。你的代碼必須用Windows函數LoadLibraryEx() 載入Python##.dll。你的代碼也必須使用Windows函數GetProcAddress()獲得指針,從而可以用它來操作 Python##.dll中的存取例程和數據(Python's C API's)。宏能夠使那些指針透明地使用在任何調用Python's C API的C代碼中。

2. 如果你使用SWIG(簡化封裝和接口生成器), 將能夠容易地生成Python"擴充模塊",它使得Python可以使用應用程序的數據和方法。 SWIG幾乎會為你處理所有蹩腳的細節。結果是C代碼連入你的 .exe 文件之內,你不必生成DLL文件,這樣簡化了聯接。

3. SWIG將會產生一個初始化函數(C函數),它的名字和擴展模塊的名字有關。 舉例來說,如果模塊的名是leo,init函數將會被稱為initleo() 。如果你使用SWIG shadow類,init函數將會被稱為initleoc(),這個初始化通常隱藏了shadow類使用的 helper 類。 你能在第2步連接C代碼進入你的.exe文件的原因是這個初始化函數等于把模塊引入Python中(第二個要點)。

 4. 簡而言之,你能使用下面的代碼初始化Python腳本解釋器引人你的擴充模塊。

  1. #include "python.h"   
  2. ...   
  3. Py_Initialize(); // Initialize Python.   
  4. initmyAppc(); // Initialize (import) the helper class.   
  5. PyRun_SimpleString("import myApp") ; // Import the shadow class.  

5. 如果你使用了除MSVC以外的編譯器,可能會有兩個問題出現,編譯器用來構建Py_None 是和python##.dll中一個叫_Py_NoneStruct的復雜數據結構相關的宏,同樣,這段代碼也不能在多編譯器環境工作,用下面的代碼代替:

  1. return Py_BuildValue("");  

它可能是用SWIG的%typemap命令自動地改變的,雖然我還沒有做這方面的工作。(我完全是SWIG新手)。

6. 使用Python shell腳本在你的Windows app的內部 搭建Python解釋器窗口不是好的想法,因為產生的窗 

  1. Python##.dll.  

問題 1: 基于FILE*的所謂 "非常高層"的函數在多編譯器環境中將不能正常工作;每個編譯器對待FILE結構會有所不同。從實現的角度看他們是非常低層次的函數。

問題 2: 當生成對void函數的封裝的時候 ,SWIG產生下面的代碼:

  1. Python##.dll.  

口將會獨立于你的app的窗口系統。然而,你(或 wxPythonWindow類)應該創建一個"本地的"解釋器窗口。它容易連接到到Python腳本解釋器。你可以重定向 Python的輸入/輸出到任何支持讀寫的對象,這樣你全部的需要就是包含read()和write()方法的對象了。

【編輯推薦】

  1. Python創建mysql的數據庫連接池實際操作方案簡介
  2. Python 多線程的單cpu與cpu上的多線程的區別
  3. Python 變量類型的代碼示例
  4. Python 程序流程控制條件代碼的示例
  5. python語法入門中導入import與from時的代碼示例
責任編輯:佚名 來源: 互聯網
相關推薦

2009-12-30 15:53:28

Silverlight

2010-04-13 18:03:33

Oracle服務

2010-09-30 10:41:29

2010-05-31 18:16:48

MySQL數據庫備份

2010-02-03 10:23:47

C++操作符重載

2010-01-04 16:50:04

Silverlight

2010-01-07 10:46:27

VB.NET Sock

2010-03-05 13:48:24

Python for

2010-07-27 13:16:50

DB2使用所有內存

2010-04-19 16:28:04

Oracle導出

2010-09-07 13:04:20

DB2數據庫

2010-08-06 11:21:45

IBM DB2 數據復

2010-08-13 10:13:15

DB2數據復制

2010-03-16 10:00:37

Python函數

2010-03-17 13:14:00

Python Libr

2010-05-07 12:19:38

Oracle刪除用戶表

2010-03-25 17:28:41

Python配置

2010-05-18 09:31:05

MySQL修改表

2010-05-19 11:25:46

MySQL觸發器

2010-03-12 15:29:19

Pythonexe
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品一区二区久久 | 国产精品视频久久久久 | 国产福利小视频 | 午夜精品| a级在线| 国产高清视频一区 | 国产欧美一区二区三区在线看 | 天天射影院 | 91久久精品国产91久久 | 欧美日韩国产一区二区三区 | 精品麻豆剧传媒av国产九九九 | 欧美4p| 精品一区二区三区在线视频 | 成人欧美一区二区三区黑人孕妇 | 精品日韩 | 亚洲一二视频 | 国产91丝袜在线18 | 午夜私人影院在线观看 | 精品福利在线 | 国产精品不卡一区 | 九色91视频 | h视频在线观看免费 | 久久精品视频一区二区三区 | 亚洲精品一区中文字幕乱码 | 521av网站| 欧美一区二区三区视频 | 色播视频在线观看 | 在线一区二区观看 | 婷婷五月色综合香五月 | av网站在线播放 | 成人久久久 | 一区二区三区四区不卡 | 超碰97人人人人人蜜桃 | 精品网 | 久久激情视频 | 奇米影视首页 | 性做久久久久久免费观看欧美 | 成人免费视频网站在线看 | 亚洲三区视频 | 精品国产31久久久久久 | h视频在线观看免费 |