use*_*947 5 emscripten webassembly
我被困住了,我希望有人可以提供帮助,\n我正在尝试为 webasm 构建 h264lib_opencore 库,并且成功构建了它,我从这个庞大的库及其依赖项中分离出了我需要的功能,并构建了一个 .a通过 emmake make 或在 CLion 中设置工具链,它可以从 emscripten 工具链成功构建静态库 .a。
\n但是,我不\xe2\x80\x99t 认为函数已正确导出,因此我使用了该-s EXPORTED_FUNCTIONS命令,但不幸的是,即使我已经在我EMSCRIPTEN_KEEPALIVE尝试调用的函数中添加了 a ,但我还是得到了未定义的导出函数。\n并且该函数可以也可以在生成的 .a 文件中看到(通过十六进制编辑器)。\n但是当我执行emcc(或em++)操作时-s EXPORTED_FUNCTIONS,我收到错误 \xe2\x80\x9cundefined 导出函数\xe2\x80\x9d
我在这里还缺少什么?
\n我使用的命令:
\nem++ libH264lib_opencore.a -o H264lib_opencore.js -s EXPORTED_FUNCTIONS="['_h264_decoder_process_first_frame']"\nRun Code Online (Sandbox Code Playgroud)\n错误
\nem++: error: undefined exported function: "_h264_decoder_process_first_frame" [-Wundefined] [-Werror]\nRun Code Online (Sandbox Code Playgroud)\n如果我打开生成的 .a 库的十六进制编辑器,我可以看到该函数就在那里,尽管名称类似于
\n_ZN16h264lib_opencore32h264_decoder_process_first_frameEPvS0_iS0_iPiS1_i\nRun Code Online (Sandbox Code Playgroud)\n我 int EMSCRIPTEN_KEEPALIVE h264_decoder_process_first_frame()还在编译之前在源中添加了
我在这里缺少什么?
\n我有一个答案供大家参考;由于该文件位于 CPP 中,我只需要将extern "C" {}其放入要导出的函数中即可运行!
所以在这种情况下,如果我要导出一个函数,h264_decoder_process_first_frame
我需要在头文件中执行
extern "C" {
void h264_decoder_process_first_frame();
}
Run Code Online (Sandbox Code Playgroud)
现在可以导出了。
| 归档时间: |
|
| 查看次数: |
3139 次 |
| 最近记录: |