【发布时间】:2010-09-20 17:45:13
【问题描述】:
这有点复杂,但让我们试试:
我正在将 LUA 脚本集成到我的游戏引擎中,并且我过去在 win32 上以一种优雅的方式做到了这一点。在 win32 上,我所做的只是将我想向 LUA 公开的所有函数标记为导出函数。然后,为了将它们集成到 LUA 中,我会解析可执行文件的 PE 头,解开名称,解析参数等,然后将它们注册到我的 LUA 运行时。这让我可以避免单独手动注册每个函数,只是为了将它们暴露给 LUA。
现在,快进到今天我在 iPhone 上工作的地方。我浏览了一些 Unix 的东西,并且非常接近采用类似的方法,但是我不确定它是否真的有效。
我对 Unix 并不完全熟悉,但这是我目前在 iPhone 上所掌握的:
-
第一步:通过objective-C查询可执行路径,获取我的app路径
第 2 步:使用 dlopen 获取我的应用程序的句柄:`dlopen(path, RTLD_NOW)`
第 3 步:使用 `dlsym( libraryHandle, objectName )` 尝试获取已知符号的地址。
上述步骤实际上不会让我到达我想去的地方,但即使这样也行不通。有没有人有在 Unix 上做这种事情的经验?是否有任何标题或功能我可以用谷歌搜索让我走上正确的轨道?
谢谢;)
【问题讨论】: