2011-08-10 5 views
3

主な目標:Python(2.6)で使用できるC#ライブラリ用のラッパーを作成します。PythonでC#ライブラリ用のラッパーを作成する

更新:私が使用している方法の更新がありましたが、うまくいきません。

シンプルなC#クラスライブラリのコードは:

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で利用できるようにするために、Signing - > Signing the Assemblyをチェックし、それに強力なキーを付けました。

私はコンパイルするたびにまた、私は古いバージョンの登録を解除:

regasm -u Test /tlb:Test 

そして私はそれを登録します。

ます。regasm Test.dllの/ TLB:テスト

私の問題は、Python環境で、次のmain.pyが動作していないことです。

import win32com.client 

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

エラーは許されません。

ありがとうございます!

+2

可能複製(http://stackoverflow.com/questions/2077870/how-to-load-ac-dll-in- Python) –

+0

私はそれを読んだことがありますが、それは同じ話題ですが、私は私の問題を理解していません。 –

答えて

2

Python for .NETをお使いの場合は別です。利用可能な​​のアルファリリースがあるようです。あなたは、単に実行することができます:[?PythonでC#のDLLをロードする方法]

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

私はあなたの答えを見ると、それは有効な解決策ですが、私は私のライブラリCOMを可視化したいと思います。それはPHPとCOMサポートを持つ他のプログラミング言語で使用できるようにするためです。 –

関連する問題