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