Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使C函数动态导出

如何使C函数动态导出
EN

Stack Overflow用户
提问于 2018-06-21 07:57:22
回答 2查看 898关注 0票数 0

我的应用程序使用带有扩展API的静态库。API能够从外部共享库或“本地”二进制文件中调用extension函数。也就是说,我可以静态地将扩展init函数包含到主可执行二进制文件中。

通过dlsym调用搜索本地函数,从主二进制动态导出init函数。这是按照nm调用进行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nm -CD <binary>

应该列出我的init功能。

让我们假设init函数具有以下签名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int init_func(INIT_STRUCT *);

这个函数不是直接调用的-它只应该通过dlsym调用来加载。

因此,我有两个相关的问题:

  1. 如何强制链接器不将此函数排除在生成的二进制文件中?
  2. 如何强制编译器/链接器动态导出此函数?

(我使用gcc编译和链接我的程序)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 08:22:57

好的,我会根据之前的评论发布一个答案。

使所有函数动态导出:-rdynamic

要始终链接单个函数(即使没有引用),需要将-u<function>添加到链接行中。

要链接所有函数(甚至未引用),请使用--whole-archive。若要返回到正常链接,请使用--no-whole-archive

票数 0
EN

Stack Overflow用户

发布于 2018-06-21 08:39:54

不幸的是,GNU工具链的默认行为是默认不从可执行文件导出符号(与默认导出所有符号的共享库相反)。您可以使用一个大锤-rdynamic标志,它告诉链接器从您的可执行文件导出所有符号。一个不那么麻烦的解决方案是在链接时通过-Wl,--dynamic-list提供显式导出文件(参见Clang源中的示例用法)。

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

https://stackoverflow.com/questions/50972892

复制
相关文章
Excel模板导出之动态导出
目前Magicodes.IE已支持Excel模板导出时使用JObject、Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程。
心莱科技雪雁
2021/03/25
1.3K0
动态规划-如何推导出状态转移方程?
昨天晚上学到了《程序员的数据基础课》中的动态规划小节,感觉有点意思,今天晚上就用代码实现了一把。如果你觉得这个课程对你有启发,可通过前文 分享一个IT专属的数学课,让这个冬天不太冷 下方的二维码链接购买,加我微信 somenzz,返你 12 元红包,共同学习。
somenzz
2020/12/10
2.5K0
动态规划-如何推导出状态转移方程?
C#实现动态网站伪静态,使seo更友好
本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态。本教程配套的C#源码工程可通过我的github下载。地址:https://github.com/shellcheng/ReWirteWebform
做全栈攻城狮
2018/12/20
9170
C语言动态内存分配函数
1.malloc() 2.free() 3.calloc() 4.realloc() 5.小结
Twcat_tree
2022/11/30
1.6K0
C语言动态内存分配函数
C语言/动态内存管理函数
在使用C语言编写程序时,使用动态内存是不可避免的,因此了解动态内存管理函数也是必要的。
用户10788736
2023/10/16
1700
C语言/动态内存管理函数
C++多态虚函数动态绑定
动态绑定是将一个过程调用与相应代码链接起来的行为。是指与给定的过程调用相关联的代码,只有在运行期才可知的一种绑定,它是多态实现的具体形式。
里克贝斯
2021/05/21
1.5K0
C++多态虚函数动态绑定
javascript 动态函数如何创建?
JavaScript作为一门动态语言,提供了多种创建动态函数的方法。动态函数的创建允许我们在运行时根据需要生成函数,从而实现灵活的编程和动态逻辑。本文将介绍动态函数的概念,探讨几种常用的方法来创建动态函数,并分享一些动态函数的应用场景。
海拥
2023/06/27
5840
javascript 动态函数如何创建?
C#调用C++动态库接口函数和回调函数
需求: 当前C++已经写好了一个动态库,完成了产品开发需求,C#需要调用C++编写的动态库DLL接口,开发出完整的软件,DLL动态库里包含了普通接口函数,回调函数。
DS小龙哥
2022/05/23
2.8K0
C#调用C++动态库接口函数和回调函数
WebAssembly技术_JS调用C函数示例_传递参数、方法导出
Webassembly 是一种可以在浏览器端运行二进制格式代码的技术,WebAssembly最大的优点莫过于可大幅度提升 Javascript 的性能。
DS小龙哥
2022/05/26
6.7K0
WebAssembly技术_JS调用C函数示例_传递参数、方法导出
C#如何快速高效地导出大量数据?
本文转载:http://www.cnblogs.com/herbert/archive/2010/07/28/1787095.html
跟着阿笨一起玩NET
2018/09/18
2.2K0
Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
今天小麦苗给大家分享的是Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?。
AiDBA宝典
2019/09/29
5.5K0
如何使 Grafana as code
Grafana Dashboard 可以做很多事情,但您知道其实是可以通过代码来配置管理 Grafana Dashboard 的吗?本文是 Grafana Labs 软件开发工程师 Malcolm Holmes 和 Inuits 的开源顾问 Julien Pivotto 在 FOSDEM 2020 上的 topic 演讲记录。演讲中,两人讨论了如何使用代码来管理您的 Grafana 实例,并介绍了一些使用 Jsonnet[1] 的秘诀和技巧以及 Grafonnet[2](一个用于生成 Grafana Dashboard 的 Jsonnet 库)。
郭旭东
2020/12/30
1.7K0
如何使 Grafana as code
如何进行C++动态转换
了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分:
iOS Magician
2023/03/22
4730
EaysPoi导出的时候根据权限动态导出列——反射实现
前言: 前段时间,因为业务需求需要根据用户角色动态导出excel,不同角色看到的列不同。以前用到的方法基本是(或者有其他土方法),创建多个实体类,每个实体类对应的列不同,以此来实现动态导出,但显然这是个笨方法,虽然省时省力,但好像总觉得哪里不对。正片开始
凯哥Java
2022/12/16
9390
EaysPoi导出的时候根据权限动态导出列——反射实现
如何使zuul支持websocket
公司要把以前一个老的项目通过zuul来路由装发(ps:老项目作为微服务中的一个子服务),而这个老项目里面有用到websocket消息推送,然而不幸的是zuul1对websocket的支持并不友好。百度了一些案例,本来开开心心以为可以得到解决方案,可惜到头来是一场梦。百度出来的例子大多数通过自定义zuul过滤器并设置超时时间来支持webscoket,于是照猫画虎,终究没使老项目的websocket通过zuul来代理推送。
lyb-geek
2018/07/26
8.9K0
如何深入掌握C语言函数
函数基本概念 每个c程序都至少有一个函数,即主函数 main()  对于简单任务程序而言,全部的代码都写在main()函数中 对于实际开发,程序任务复杂多样 如果全写在main()函数中,就会变得庞大臃肿,结构复杂,造成有很多不必要的重复 由此根据程序的逻辑和任务的分工把代码写到不同的自定义函数中 而业务逻辑和处理流程化分到main() 需要执行具体任务再调用自定义函数 函数类型对比 库函数 C语言或系统提供(自带) 实现某些基本的功能,例如scanf、printf,可在程序中直接调用
用户9645905
2022/11/30
1.3K0
如何深入掌握C语言函数
关于C#获取动态的时间差函数
   在QQ等空间中,我们常常看到某某条动态发布与多少秒前(32秒前)、1分钟前、1小时前、1天前、1个月前,但是我们对于数据库中存的时间格式为:2016-05-18 00:19:21.437 --去苦恼与无法转换,下面提供一个方法。 /// <summary> /// /// </summary> /// <param name="dt">发布动态的时间</param> /// <returns></returns> pub
牛嗷嗷
2018/03/30
1.2K0
poi导出excel动态表头并合并
import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
余生大大
2022/10/25
2K0
poi导出excel动态表头并合并
如何使JavaScript更高效
传统的 Web 页面不会包含很多脚本,至少不会太影响 Web 页面的性能。然而,Web 页面变得越来越像应用程序,脚本对其的影响也越来越大。随着越来越多的应用采用 Web 技术开发,脚本性能的提升就变得越来越重要。
疯狂的技术宅
2019/03/28
1.6K0
C# 如何在Excel 动态生成PivotTable
Excel 中的透视表对于数据分析来说,非常的方便,而且很多业务人员对于Excel的操作也是非常熟悉的,因此用Excel作为分析数据的界面,不失为一种很好的选择。那么如何用C#从数据库中抓取数据,并在
牛嗷嗷
2018/03/30
1.1K0

相似问题

如何使C#对象动态重写函数?

20

C标志'-Wl,-导出-动态‘vs链接器标志’-导出-动态‘

11

如何使排序函数动态化

74

如何使函数动态更新html?

45

如何使这个函数动态化?R函数

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文