![]() |
1
9
使用标准C,您只能导出函数或不导出函数,没有仅导出到这些文件的选项。所以基本上你必须移动
使用标准C范围之外的工具,您可以在链接时或链接后从库中删除公共导出。下面显示了一些链接器解决方案,使用GCC和clang(在可以修改代码的情况下),可以通过在函数前面加上非标准属性来隐藏函数:
C解决方法
如果您可以自由编辑C代码,那么标准C中的解决方法是
例如:
在里面
在里面
在里面
在此解决方案中,将有一个名为
Linker解决方案通过探索特定的链接器,我找到了一种从动态库中排除特定符号的方法:
使用GNU
通过调用
使用
通过调用
在这两种情况下,函数
测试代码,
测试用例:
|
![]() |
2
0
函数只能具有内部或外部链接。 如果你想使用不同的模块,你的函数需要有外部链接,这样它们就可以从一个翻译单元调用到另一个。 您可以使用指向静态函数的外部函数指针,但当然,这仍然允许其他模块通过函数指针调用函数。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 7 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 7 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 7 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 7 月前 |