关于函数级链接

关于函数级链接

Visual C++ 编译器选项/Gy会启用函数级链接。

此选项允许编译器以封装函数 (COMDAT) 的形式将各个函数打包。

 

链接器要求单独打包为 COMDAT 的函数在 DLL 或 .exe 文件中排除或安排各个函数。

可以使用链接器选项 /OPT(优化) 从 .exe 文件中排除未引用的封装函数。

可以使用链接器选项 /ORDER(按顺序放置函数) 按指定顺序将封装函数放在 .exe 文件中。

如果内联函数实例化为调用(例如,当关闭内联或获取函数地址时出现这种情况),则始终打包内联函数。另外,在类声明内部定义的 C++ 成员函数会自动打包;其他函数不会如此,所以需要选择此选项以便将它们作为封装函数编译。

 

假设有一个库(lib):
void f1(){}
void f2(){}
你的程序中使用到 f1
使用 /Gy
f1被链接到程序中,因为允许编译器以封装函数 (COMDAT) 的形式将各个函数打包,所以f2可以不被链接进去
如果使用 /Gy-
f1和f2都被链接到程序中

/Gy 的好处就是可以方便移除没有被引用的函数

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值