我的使用方法是:
1、先调用pikascript_entry得到pikaMain对象,将其做为全局对象
2、将代码从文件load上来后使用obj_run运行,这样一切正常
现在,我弄了两个py文件,用rust那个程序打包成了一个pikaModules.py.a文件,然后:
1、第1步上和面的一样不变
2、obj_linkLibraryFile加载pikaModules.py.a
3、obj_runModule(pikaMain, "main")这样来运行main.py
由于我自己注册了一些函数,是基于pikaMain这个对象来注册的。第一种方案,我自己注册的函数可以正常调用。第二种方案,我自己注册的函数会在obj_runModule(pikaMain, "main")的时候报找不到。为何呢?
离线
你自己注册的函数是不是不基于 pyi 的方式,应该要一律用 pyi 注册的方式来弄,这样才不会冲突
参考模块注册文档:https://pikapython.com/doc/index_cmodule.html
不是用的pyi,我是在pikaMain创建了之后,直接
obj_setObj(main, "SystemInfo", sysInfo);
这样注册的,这种方式在方案1上没问题,为何方案2就不行呢?其原因是啥?
我这个工程不太方便统一用pyi的方式,因为脚本部分被包装成了库,而这个注册是在应用程序模块中进行的。脚本库没法访问到仅在app模块里才有的量。所以我更希望知道背后的原因以及怎么解决这个问题
最近编辑记录 coollofty (昨天 20:03:19)
离线