API 脚本命令是内置的还是外部创建的?

我正在尝试使用 Lua/Moonsharp API 脚本编程。有一个命令库,但它没有我需要的函数。我的问题是,我能否创建自己的函数,还是只能使用已经编写好的函数?

具体来说,对于一个叫做 BobCAD 的软件,有一个 Lua 插件可用。有命令列表,例如 Bcc.SetCamObjParameter,但是没有我需要的命令。我假设 BobCAD 软件的某些部分对 API 是不可访问的,但是在这个插件中,我只能使用库中提供的命令吗?我认为在程序文件夹中会有一些 C# 文件,在这些文件中我可以阅读函数,可能学习如何创建自己的函数,但我没有看到任何类似的文件。 (或者脚本函数是在软件内部设置的,我只能访问已提供的函数?)

原文链接 https://stackoverflow.com/questions/69601118

点赞
stackoverflow用户2755919
stackoverflow用户2755919

一般来说,对于像这样使用情况(其中Lua脚本是作为更大程序的一部分提供的,或者通过更大程序的插件提供的情况),决定Lua可用API的是程序或插件的开发人员。在后一种情况下,他们可能还受限于程序的插件API允许的内容;在BobCAD的情况下,您可能仅限于BobCAD插件API允许的内容,然后进一步受到Lua插件的开发人员选择在Lua本身上提供的API的限制。

当然,您可以在Lua中编写自己的函数,但是在实际与主机程序进行通信方面,除非它们提供某种机制(例如LuaJIT的Foreign Function Interface)以便从Lua中到达程序并调用未明确提供的功能 - -大多数人没有这样做。

至于在“程序目录中找到一个C#文件” - C#是一种编译语言;通常将C#库作为预编译的CLR二进制文件(具有.dll扩展名)进行传送,并且不包含源代码。如果BobCAD和/或Lua插件的源代码可用,则可以随时修改并重新编译它,但由于BobCAD是商业的、闭源软件,我不指望它能够得到。

在那时,你的选择基本上是:

  • 找出用可用的命令完成你需要做的事情的方法;
  • 尝试逆向工程足够的程序,以在没有访问源代码的情况下完成你需要做的事情;
  • 或者寻找具有所需功能的另一个程序。
2021-10-18 16:57:08