首页 > 代码库 > IronPython打包记录之二:外部dll和配置文件 (转)

IronPython打包记录之二:外部dll和配置文件 (转)

原文链接:http://xufive.blog.163.com/blog/static/172326168201252143343849/

 

解决了IronPython的源码打包问题,却无法把源码中调用的外部dll文件包含进去,心情郁闷了几天。然天无绝人之路,老天爷不忍心饿不死瞎家雀。和朋友L闲聊时,说起了我的困惑,他说,有可能是路径的问题。

一语惊醒梦中人!

这是我导入dll的代码:

         ……
                import clr
                clr.AddReferenceToFile("Rcg.RFID.dll")
                ……

Rcg.RFID.dll 就是我的代码要调用的外部dll文件名,和调用它的源码在同一级路径下,因此使用可相对路径。该文件的绝对路径是D:\project\share_xufive\Baidu\pyReader\,增加路径代码之后的代码如下:

         ……
                import sys
                sys.path.append(r‘D:\project\share_xufive\Baidu\pyReader‘)
                import clr
                clr.AddReferenceToFile("Rcg.RFID.dll")
                ……

再次运行打包脚本,得到pyReader.dll和pyReader.exe两个文件,点击运行,见到了期望中的窗口界面!不敢高兴太早,点击按钮测试功能、查看日志问文件,一切正常。将pyReader.dll和pyReader.exe复制到他处测试,发现仍然无法正常工作。只用了一秒钟,我就想到了问题所在:缺少位置文件。把配置文件复制过来,终于大功告成!

总结:

    1. 调用外部动态库文件,不能使用相对路径,必须要追加该文件绝对路径到sys.path中,因为该动态库文件将和源码一起被打包到生成的目标动态库文件中。
    2. 资源文件、配置文件等,可以使用相对路径,这些文件不会被打包到生成的目标动态库文件中。

IronPython打包记录之二:外部dll和配置文件 (转)