編譯C/C++爲WebAssembly

編譯器安裝

若是本身想手動安裝,能夠參考https://emscripten.orgjavascript

我使用docker來運行,運行命令以下(至關於進入一個已經裝好了編譯器的linux系統)html

sudo docker run -it -v /tmp:/tmp trzeci/emscripten bash

準備好測試的源代碼

假設文件test.c的內容以下java

#include <stdio.h>
#include <emscripten/emscripten.h>

int main(int argc, char ** argv){
    printf("This is main function\n");
}

#ifdef __cplusplus
extern "C" {
#endif

void EMSCRIPTEN_KEEPALIVE show(int argc, char ** argv){
    printf("This is show function\n");
}

#ifdef __cplusplus
}
#endif

編譯

emcc test.c -s WASM=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall']" -o test.js

編譯會生成test.jstest.wasm這2個文件,引用的時候須要放在一塊兒linux

HTML引用

<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<button>run c show function</button>
<script type="text/javascript" src="test.js" async></script>
<script type="text/javascript">
document.querySelector('button').addEventListener('click', function(){
    Module.ccall('show', null, null, null);
});
</script>
</body>
</html>

注意

main函數是默認就會被調用的docker

網頁項目須要跑在HTTP服務下才能夠bash

相關文章
相關標籤/搜索