首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用-O3扩展剥离函数

使用-O3扩展剥离函数
EN

Stack Overflow用户
提问于 2018-11-27 06:57:51
回答 1查看 96关注 0票数 1

我正在用emscripten编译一个稍微复杂的项目。(至少比我在网上找到的简单例子更复杂。)首先,我构建所有单独的库和应用程序并将它们存档(emar)。然后,它们被链接在一起成为最终的可执行文件。

在此项目中,函数指针用于事件处理程序上的回调。当我将最终的可执行文件与-O3链接时,它正在剥离用于回调处理程序的函数,并且代码不能正常运行。

我可以通过将EMSCRIPTEN_KEEPALIVE添加到函数回调的定义中来修复此问题。但是,我的项目是跨平台的,支持的不仅仅是web部署。所以这不是最好的解决方案。

有没有一种好的方法可以只将所有函数保存在一个特定的库中,同时仍然优化其余的代码,这样我就不必用特定于平台的术语修改每个单独的子项目/应用程序?

EN

回答 1

Stack Overflow用户

发布于 2018-12-04 20:04:47

根据the Emscripten documentation的说法,我认为LLVM内联了这个函数,而这个函数被删除了。

另一种激活函数的方法是将其添加到EXPORTED_FUNCTIONS中。例如:

代码语言:javascript
复制
emcc -s EXPORTED_FUNCTIONS='["_function_1", "_function_2"]'   ...other options...

请注意,列表中的所有函数都应以下划线作为前缀。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53490376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档