如何将“ .bc”库中的符号(即emar Archiver构建器中的.a后缀)导出到javascript?

时间:2018-11-17 21:41:10

标签: c++ emscripten

我有一个Emscripten C ++构建,其中使用emar实用程序在子构建中创建了几个“ .a”库。在几个库中,我有一些

extern "C" {
   void funcToExportToJavascript(int arg) {
       ...
   }
}

声明。

我使用emcc将所有对象和libXXX.a libs“链接”到最终模块.wasm + .html + .js中,还将包含我希望从库中导出的符号的export.txt文件传递给它。

emcc在库中找不到“导出的符号”。如果我不从库中导出符号,则“链接/优化”成功,并且所有C ++代码都从库中获取所有符号,并且一切都按预期运行。找到从传递到最终单个目标文件中最终链接的“目标”文件中“导出”的符号。

我唯一的办法是将所有对象模块从库中提取到临时区域,然后分别添加然后添加到最终链接中?有没有办法使用“ emcc”创建带有导出符号的库?

如果库中仅实际使用了几个符号,而并非全部以LLVM'.bc'位代码的形式提供,会导致代码膨胀吗?

1 个答案:

答案 0 :(得分:1)

因为我没有探索所有角度,所以这个问题可能不会迅速解决。但是其他人可能也有同样的问题。

但实际上确实有效!

但是我的难题是,您不能为emcc指定多个导出列表文件-显然只有指定的最后一个需要。它如此默默地执行,没有错误报告,也没有在文档中提到不能重复执行一次。

将所有导出合并到一个文件中后,所有文件均按预期工作。