discarded by /OPT:REF (VC调试警告)

本文详细介绍了在编译Release版本项目时遇到LINK:warningLNK4089:all reference to GDI32.dll discarded by /OPT:REF警告的解决办法,包括添加特定命令行参数来优化链接过程,减少无用DLL的引用,并解释了这种警告的由来及在发布版本中的常见性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天编译Relese版本项目是遇到【LINK : warning LNK4089: all references to "GDI32.dll" discarded by /OPT:REF】
这种警告解决办法:
1.Project--Setting--Link 选项卡,在Project Options 处添加 /opt:noref
2.Project--Setting--Link 选项卡,在Project Options 处添加 /IGNORE:4089
3.在程序中添加 #pragma warning(disable:4089)

注意:因为使用【/IGNORE:4089】生成的文件大小比【/opt:noref】小,个人推荐使用【/IGNORE:4089】

在网上找到一些原因如下:
这个警告只是简单的意味你错误的连接一个库(library),编译器查到你并没有使用其中的函数.这个警告在你做发布版(release builds)的时候是很平常的,因为/OPT:REF的连接器选项在发布版本(release builds)被设置成为命令连接器修正你的最终代码尽可能的避免连接无用的dlls.(这使得可执行代码的import地址表尽量的小).
[root@localhost rules]# vim node-up.rules [root@localhost rules]# docker rm -f prometheus prometheus [root@localhost rules]# docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/prometheus WARNING: Published ports are discarded when using host network mode fb4c4de5d4ab0f8b981d70ed06f299c370716bfd0f301cb78b00757c26dccc68 [root@localhost rules]# vi /prometheus/prometheus.yml [root@localhost rules]# docker rm -f prometheus prometheus [root@localhost rules]# docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/prometheus WARNING: Published ports are discarded when using host network mode f89a3c1c87dacc072c0e3f276c894b4af6577bff3bb555d045ab101ee9f545f1 [root@localhost rules]# docker restart prometheus prometheus [root@localhost rules]# vim node-up.rules [root@localhost rules]# docker rm -f prometheus prometheus [root@localhost rules]# docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/prometheus WARNING: Published ports are discarded when using host network mode b37c19541089a54f2db765f3ae51379c0d384e40f3697022109f365c97c81673 [root@localhost rules]# vi /prometheus/prometheus.yml [root@localhost rules]# docker run --name prometheus -d -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/groups/:/usr/local/prometheus/groups/ -v /root/prometheus/rules/:/usr/local/prometheus/rules/ prom/prometheus docker: Error response from daemon: Conflict. The container name "/prometheus" is already in use by container "b37c19541089a54f2db765f3ae51379c0d384e40f3697022109f365c97c81673". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'. 这样配置之后却没有在普罗米修斯的rules看到node-rule
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值