我面临着用户编写可编写脚本的C++应用程序的任务.该应用程序已经开发了几年,之前没有人浪费过这个想法.它包含各种细节,如多线程,模板向导和多重继承.作为脚本语言,Python是首选,但如果它更容易实现,则可能会接受Lua.
从我到目前为止所学到的,大致上有两种方法可以将Python/Lua与C++集成:"扩展"和"嵌入".
在这种情况下,看起来我需要两者.脚本语言需要从应用程序访问对象,方法和数据,但一旦用户编写脚本,就需要由应用程序调用 - 无需重新启动任何内容.
这通常是如何在现实世界中完成的?
似乎有一系列令人眼花缭乱的手动解决方案和绑定生成器,所有这些都不够完美.
网上发现的大部分内容都有些过时了.例如,据说swig在非平凡的情况下很难并且生成难以理解的代码.OTOH,它最近已经进入v2.0.
上面的一些使用pygccxml让gcc分析C++代码然后生成绑定.我发现这个想法很有吸引力,因为gcc可能比我更了解代码:-).这效果好吗?
对它们进行全部测试可能很容易花费我为整个项目分配的时间的一半.
那么,你推荐哪些?
我有一个用C#编写的桌面应用程序我想在C#/ VB上编写脚本.理想情况下,用户可以打开侧窗格并编写类似的内容
foreach (var item in myApplication.Items)
item.DoSomething();
Run Code Online (Sandbox Code Playgroud)
语法高亮和代码完成会很棒,但我可以没有它.我不希望需要用户拥有Visual Studio 2010的安装.
我正在考虑调用编译器,加载和运行输出程序集.
有没有更好的办法?
是Microsoft.CSharp答案吗?
我使用Javascript对象作为具有配置属性的对象.例如,我在javascript中有这个对象:
var myProps = {prop1: 'prop1', prop2: 'prop2', 'prop3': 'prop3'};
Run Code Online (Sandbox Code Playgroud)
这个对象(NativeObject)在Java函数中返回给我.例如
public Static void jsStaticFunction_test(NativeObject obj) {
//work with object here
}
Run Code Online (Sandbox Code Playgroud)
我想从object获取所有属性并从中构建HashMap.
任何帮助将不胜感激.
显然,有一种方法可以让我的 GUI 应用程序可以使用 AppleScript 编写脚本。例如,我可以有一个命令行应用程序(例如从 LaunchDaemon 运行)来告诉我的 GUI 应用程序发布侧边栏通知。有人有一个简单的例子来解释这一点吗?我在苹果网站上看到的一切都很难理解。
我想创建一条 AppleScript 消息,例如:
tell "My App" to notify with title "Title" subtitle "subtitle" text "some text"
Run Code Online (Sandbox Code Playgroud)
在我的 CLI 应用程序中,然后我的 GUI 应用程序唤醒、接收并处理它。
scriptable ×4
.net ×1
applescript ×1
binding ×1
c# ×1
c++ ×1
cocoa ×1
java ×1
javascript ×1
lua ×1
macos ×1
objective-c ×1
properties ×1
python ×1
rhino ×1