我意识到这可能不是您问题的确切答案,但我想我会投入我的 2 美分,因为我怀疑很多人都尝试过这个。
我通过使用混合模式 C++ 创建了一个托管包装器来使其工作。还有其他方法可以做到这一点,但我将尝试制作一个可以从任何 .NET 语言使用的完整包装器。
让 lib 以一种可以包含在混合模式项目中的方式进行编译是一个挑战。我必须修改用于 /MD 和 /MDd 的运行时库(在 SConstruct 文件中),以便它与 /clr 开关兼容。
到目前为止,我只运行了简单的脚本,因为我还没有实现回调、自定义方法、对象等。
这是我的一个测试应用程序的使用情况的快速示例:
V8DotNet.Shell shell = new V8DotNet.Shell();
shell.ExecuteScript(@"print('V8 version is: ' + version());");
它也可以运行更复杂的脚本,例如 base64 编码器。但现在我只能从 c++ 端添加自定义项。
如果有人感兴趣,我愿意提供更多信息+代码,因为我可能永远不会选择这个项目。但是,恐怕这里的帖子要写很多代码,所以我们必须找到其他媒体,比如 google code 或 codePlex。
编辑:
好的,我已经上传了代码。我必须对此发表免责声明:该项目还很早,而且我充其量只是 C++ 的业余爱好者,所以不要抱太大希望。此外,该项目是在 chrome 发布后创建/完成的,因此包含的 v8 版本可能是旧的。
也就是说,这里是:http ://ryanscook.com/Files/V8-DotNet.zip (21.5 MB)
在包中,您会发现以下感兴趣的项目:
V8Net-Library\V8.Net\V8.Net.sln -这是具有托管 C++ 包装器项目和用于测试的 C# 控制台应用程序的解决方案。
Dependencies\V8 -这是我用来构建 V8 库的 V8 代码。
希望能帮助到你!