簡體   English   中英

在 Python 中為 C# 庫創建包裝器

[英]Creating a wrapper for a C# library in Python

主要目標:為 C# 庫創建一個包裝器,該庫可用於 Python (2.6)。

更新:現在,我對我正在使用的方法進行了更新,但是效果不佳。

簡單 C# class 庫的代碼:

using System;
using System.Text;
using System.Runtime.InteropServices;

namespace Test
{
    [Guid("8F38030D-52FA-4816-B587-A925FDD33302")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface _TestClass
    {
        [DispId(1)]
        string Eureka();
    }

    [Guid("BC3F6BB3-42C4-4F30-869A-92EA45BF68D2")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("Test.TestClass")]
    public class TestClass : _TestClass
    {
        public TestClass()
        {
        }

        public string Eureka()
        {
            return "Hudson, we no longer have a problem!";
        }
    }
}

enter code here

除此之外,我進入項目屬性並啟用設置:注冊 COM 互操作。

此外,為了使 COM 可以使用 class 庫,我勾選了 Signing -> Sign the Assembly,並給了它一個強密鑰。

此外,每當我編譯時,我都會取消注冊舊版本:

regasm -u Test /tlb:Test

我注冊它:

regasm Test.dll /tlb:Test

然后我的問題是,在 Python 環境中,我有以下 main.py,它不起作用:

import win32com.client

o = win32com.client.Dispatch("Test.TestClass")

錯誤是不可原諒的。

先感謝您!

如果您將Python 用於 .NET ,則另一種選擇是。 似乎有Windows CPython 2.6 和 2.7的 alpha 版本可用。 你可以簡單地運行:

import clr
clr.AddReference("Your.Assembly.Name")
import Test
test = Test.TestClass()
print test.Eureka()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM