[C#]VS2017使用google v8 Javascript引擎


V8是JavaScript渲染引擎,號稱是最快的,因為品牌效應,我信了,相關介紹網上一堆,我就不粘貼了,原庫是直接提供給c++調用的,這里會用到微軟的ClearScript.V8(包裝v8),JavaScriptEngineSwitcher.V8(包裝ClearScript)兩個C#庫。

 

一、安裝:

1、項目右鍵,選擇 管理NuGet程序包

2、搜索下面4個包並安裝

 

3、檢查引用目錄下面是否存在相關dll鏈接庫,不存在需要手動添加,運行后如果碰到缺少相關dll的問題,將項目根目錄下packages\ClearScript.V8.x.x.x文件里面的相關dll文件拷貝到Release/Debug目錄下。

發下牢騷:我在這步的時候運行出錯,查了一下原因,是由於缺少v8.x64.dll,立馬去https://github.com/v8/v8/ 下載源碼,想自己編譯個最新版的dll,下下來之后就懵逼了,咋編譯啊,cmake、makefile、sln一個沒見啊,各種百度,各種安裝,python、mingw(gcc)、cygwin(選錯了,裝后70G,-_-#)、depot_tools、Shadowsocks、Proxifier(depot_tools的gclient需要代理),哈哈,最后還是沒搞定,果斷放棄了,耗時大半天,話說就不能弄個大眾的編譯環境么?非得什么都自己的,坑貨!!!!如果朋友們看到這里,有會的,編譯通過的,還望教教我。

 

二、 測試代碼

    public class TestJsClass {
        public int arg1 { get; set; }
        public int arg2 { get; set; }

        public TestJsClass(int a1) {
            arg1 = a1;
            arg2 = 0;
        }

        public void Alert(string v) {
            MessageBox.Show(v);
        }
    }

測試調用:

            string jsContent = @"
                var a = '';
                var test = function(b){
                    testC.Alert(a + ' ' + b);
                    testC.arg1 = 1;
                    testC.arg2 = 2;
                    return testC.arg1 + testC.arg2;
                };
            ";

            using (IJsEngine jsEngine = new V8JsEngine()) {
                TestJsClass testClass = new TestJsClass(1);
                jsEngine.EmbedHostObject("testC", testClass);
                jsEngine.Execute(jsContent);

                jsEngine.SetVariableValue("a", "a_ok");
                int rtValue = (int)jsEngine.CallFunction("test", "param_ok");
                MessageBox.Show($@"testClass.arg1={testClass.arg1} testClass.arg2={testClass.arg2} return:{rtValue}");
            }

結果:

 

很好執行成功,個人感覺非常好用,互相調用與傳參。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM