【发布时间】:2011-08-10 09:41:42
【问题描述】:
主要目标:为 C# 库创建一个包装器,可以在 Python (2.6) 中使用。
更新:现在,我对正在使用的方法进行了更新,但效果不佳。
简单 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 -> 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")
错误不可原谅。
提前谢谢你!
【问题讨论】:
-
我读过,这是同一个主题,但我没有弄清楚我的问题。