pythonnet调用不了x86的dll_python 调用 .net dll方法

本文详细介绍了如何使用Python通过pythonnet调用来调用.NET Framework的DLL,特别是解决在调用x86架构DLL时遇到的问题。步骤包括安装所需组件、修改C#源代码、编译生成DLL、注册COM组件、添加到全局缓存,并在Python中通过win32com模块进行调用。
摘要由CSDN通过智能技术生成

Python编程语言的应用,可以很好的帮助编程人员提高开发效率,而且其应用范围广泛。在这里我们可以先通过对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, 也可以手动生成密钥文件,然后在这里选择.

在Python调用.net framework的方法中,手动生成的方法:在.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;

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将会出错。

以上就是Python调用.net framework的全部步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值