IronPython 将python源码编译成dll,用python调用报错ImportError: dynamic module does not define...
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IronPython 将python源码编译成dll,用python调用报错ImportError: dynamic module does not define...相关的知识,希望对你有一定的参考价值。
报错是importError: dynamic module does not define init function (initmyjz)
ironpython几乎没有用过。原来它还有这个功能。我过去是使用python的c语言扩展方式生成动态库。最近我习惯使用cython。python主要在linux下使用。在windows下反而别扭。ironpython主要应该是使用.net吧。如同jython一样,它不能算是python了。除了语法。
看到孟羽然的回答。原来在ironpython里不是使用__init__.py而是通过入口函数init....()
不过看你的提示,似乎是两个原因:
1.你编译的dll版本与python版本不对。一个是32位,一个是64位(可能性小)
2.你的动态库不在当前目录里(可能性中等)
3.结尾不是pyd,而是dll(这个我不确认)
4.动态库不符合ironpython规范,这一点倒是与孟羽然的回答有些接近(可能性大) 参考技术A 如果你要制作一个python module名为myjz,那么就必须定义一个module入口函数:initmyjz()追问
请问入口函数有什么特殊格式或要求么?
追答Python 3.X扩展的入口函数签名如下:
PyMODINIT_FUNC PyInit_xxxxxxx(void); // 其中xxxxxxx是module名,必须保持一致
详见:http://docs.python.org/3/extending/
Python 2.X扩展的入口函数签名如下:
PyMODINIT_FUNC initxxxxxxx(void) // 其中xxxxxxx是module名,必须保持一致
详见:http://docs.python.org/2/extending/
能不能给个简单的例子?先谢谢啦!我现在只会用PYTHON其他语言都不会!我查看你指定的路径下文档,扩展好像是用C写的,可是IRONPYTHON是直接将PYTHON编译成DLL的,不太明白!
本回答被提问者采纳python编程基础之一
编译:将全部代码转成二进制可执行文件
速度快,
c,c++等
解释:一行一行的将代码解释
速度慢
python,php等
python简介:Guido van Rossum 1989年
常用的python解释器:
cpython ---最广泛
jpython ---java
ironpython
pypy -----支持JIT技术(即时编译)
python的特点:
1、解释性语言------不编译,解释一行,运行一行
2、交互式语言------直接互动
3、面向对象语言
4、跨平台语言
5、适合初学者
python的优点:
简单易学,可移植,可扩展,可嵌入,丰富标准库,支持各种主流数据库,支持GUI编程(图形化界面)
python应用:web后端开发,网络爬虫,人工智能,自动化运维,网络编程
以上是关于IronPython 将python源码编译成dll,用python调用报错ImportError: dynamic module does not define...的主要内容,如果未能解决你的问题,请参考以下文章