使用Pythonnet调用C#库注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014525494/article/details/86490627

最近在做python封装C#库的工作,之前接触的不多,因此遇到了很多的问题,下面将其一一列出,以便后续查看。

(1)为什么要用Pythonnet而不是IronPython?这个很多大神都提到过前者,python程序为主体,部分调用C#接口;后者.NET为主体,部分功能用到Python。

(2)如何安装Pythonnet?官网上说的很详细:https://github.com/pythonnet/pythonnet/wiki/Installation

(3)如何使用Pythonnet?http://pythonnet.github.io/

(4)注意事项1:如何引用dll库?

import clr
clr.AddReference("MyDLL")

注意这个MyDLL.dll的路径是当前目录下,如果在别的地方引用可以添加引用路径,如下

import sys
sys.path.append("H:\PythonnetDemo\lib")

(5)注意事项2:为什么pycharm中会显示红色波浪线?

System是.Net Framework自带的库,虽然有红色波浪线,但是已经引入成功了。:

(6)注意事项3:自己引入的库是不会有自动提示的!!!!

这里注意很多朋友习惯使用自动提示,但是引入的DLL中的函数是不会在pycharm中自动提示的!!

(7)注意事项4:C#中的event handler如何在Python中调用呢??

def handler(sender):
    print('handler called!')

object.Event += handler

最重要的地方:一般来说python test.py以后,python按照顺序执行文件便退出了,如果您这个时候添加了onRecvMsg这种回调,它是不能接收到的!!解决方案是让Python程序一直在运行,如下:

input('点击任意键退出')

这样Python程序将会一直处于运行中,event便能执行了。

心得:有些问题在网上可能没有答案,还需要自己慢慢去摸索!

猜你喜欢

转载自blog.csdn.net/u014525494/article/details/86490627