簡體   English   中英

為什么腳本不能編譯我的函數?

[英]Why won't emscripten compile my functions?

我正在嘗試將一些c ++代碼編譯為帶有功能的wasm二進制文件。 但是,即使我在編譯過程中未收到任何編譯錯誤或任何其他警告,emscripten生成的文件也不包含我使用“ -s EXPORTED_FUNCTIONS = ['....']”導出的功能。

這是帶有我要導出的功能的文件: https : //pastebin.com/B5w1R4BC

這是我正在使用的編譯命令:

em++ -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 \
-Igameoflife/include -Os -DNDEBUG \
-s EXPORTED_FUNCTIONS="['_GOL_Instance_new', '_GOL_Instance_destroy', '_GOL_Init', '_GOL_Step', '_GOL_get_values']" \
-o gol.js gameoflife/src/cellmap.cpp bridge.cpp

運行沒有任何問題。

但是,當我將'gol.js'導入javascript時,Module對象無權訪問我要包括的任何函數(我在等待調用這些函數的模塊初始化之前)。

TypeError: Module._GOL_Instance_new is not a function

為什么我不能通過wasm訪問這些功能?

它們可能被您的C ++編譯器所破壞。 將它們聲明為extern "C"以避免這種情況:

extern "C"
GOL_Instance *
GOL_Instance_new() {
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM