我意识到这可能不是您问题的确切答案,但我想我会投入 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 代码。
希望能帮助到你!