Python 調用.net framework寫的類庫的方法

來源:互聯網
上載者:User

Python 調用.net framework寫的類庫的方法

1. 安裝python2.5和對應的pywin32

安裝方法:略。

2. 下載ironPython原始碼 是C#的。

我用的是IronPython1.1的版本,從codeplex網站下載IronPython_1_1.rar。解壓縮。

3. 用vistual studio 建立一個.NET類庫工程,工程名字為:IronPython。把ironPython目錄下的src子目錄中的ironPython目錄的ironMath目錄裡的c#源檔案(不要assemblyInfo.cs)都考到你的工程目錄裡。在工程裡增加剛考來的源檔案。

4. 修改AssemblyInfo.cs

[assembly: ComVisible(false)]

將false 改為true

5. 在項目=>屬性=>產生裡把 為COM Interop註冊 打上勾

6. 在項目=>屬性=>簽名 裡把為程式集簽名 打上勾,選擇強式名稱密鑰檔案時 選擇建立,輸個檔案名稱,比如 IronPython.snk, 也可以手動產生密鑰檔案,然後在這裡選擇.

手動產生的方法:在.Net Framework的命令列介面裡 用 sn -k IronPython.snk 這個命令.

7. 編譯項目產生 IronPython.dll

8. 在.Net Framework的命令列介面裡用 regasm IronPython.dll 註冊COM組件

9. 在.Net Framework的命令列介面裡用 gacutil -i IronPython.dll 把庫加到全域緩衝裡

10. 建立.net framework 的類庫。代碼如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

size: 10pt; font-family: 新宋體; color: blue;" lang="EN-US">namespace test

{

    public class testclass

    {

        public string func()

        {

            return "hello world";

        }

    }

}

11. 建 立test.py調用剛才寫的test.dll類 庫。代碼:

import win32com

import win32com.client

eng=win32com.client.Dispatch("IronPython.Hosting.PythonEngine")

 

eng.execute("import clr")

eng.execute("import sys")

eng.execute("""sys.path.append('c:\\\\test')""")

eng.execute("print sys.path")

eng.execute("""clr.AddReferenceToFile("abc.dll")""")

eng.execute("from test import *")

eng.execute("obj = testclass()")

eng.execute("print obj.func()")

注意:eng.execute("""sys.path.append('c:\\\\test')""")

這句是將test.dll所在的路徑添加到ironPython的sys.path中去。如果不加,AddReferenceToFile將會 出錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.