warning LNK4098

2024-03-05 02:08
文章标签 warning lnk4098

本文主要是介绍warning LNK4098,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 VC6写的static library,在VC6的MFC工程下调用,出现了“warning LNK4098 ”。解决办法:

    设置lib工程: Project — Setting — General,将“Microsoft Foundation Classes ”设置为跟MFC工程相同即可,通常为“Use MFC in a shared DLL ”。


参考:

转自: http://blog.csdn.net/dkink/article/details/3978014

作者:DKink|棼紫

2009.03.10

我们在使用一些lib的时候往往会出现如下warning

    warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library

这是怎么回事呢?很简单,你所使用的lib文件编译的时候使用的C-runtime lib和你正在所写的程序所使用的不相同或不兼容。

 

 

你可以看到一般有6种CRT,一般他们都是互不兼容的,注意不同版本的VC的CRT也有可能是不兼容的。

 

我写一个简单的程序来再现这种warning。

 

新建一个 Win32 Static Library 工程,如图:

 

里面添加一个h文件和一个CPP文件内容如下:

在VC6中项目,DEBUG版本默认Debug Single Threaded版本CRT,release版本默认Single Threaded版本CRT。我们对这个lib工程修改成MutilThreaded版本的CRT,然后编译成lib文件,注意使用Batch Build生成release版本,setting里面release版本的CRT也要设置成MutilThreaded版本的。

然后随意再新建一个Win32 console的工程使用我们刚写好的lib。由于Debug Single Threaded版本CRT和我们刚写lib使用的MutilThreaded版本的CRT的不兼容问题所以产生warning,如下图。

 

这样大家就明白warning LNK4098产生的原因了吧,解决的方法是调整项目使用的CRT和lib使用的相同或兼容。如果使用的多个lib的CRT互不兼容就麻烦了,如果有源代码的话,我建议用手头的编译器统一为相同的CRT重新编译,这是最安全的办法。当然你选择忽略某个库的方法也可行,但是可能会造成某些不可预料的其他问题。

这篇关于warning LNK4098的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774987

相关文章

解决PHP Warning: strftime(): It is not safe to rely on the system's timezone set

当运行一些程序时,在httpd日志中会有如下警告日志: PHP Warning:  strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set(

Linux - SSH: WARNING REMOTE HOST IDENTIFICATION HAS CHANGED

一、问题     通过 SSH 登录节点时遇到的问题 二、方案     通过 vi ~/.ssh/known_hosts 删除对应节点 ip 的 rsa 信息即可

modelsim 关闭 warning 的方法

按照下面的图片设置后可以关闭 warning

c/c++: warning: ISO C90 forbids variable length array ‘a’

文章目录 介绍C99安全问题类似的alloca安全问题的防护 介绍 https://en.cppreference.com/w/c/language/array @item -Wvla @opindex Wvla @opindex Wno-vla Warn if a variable-length array is used in the code. @option{-Wno-v

Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc

这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如: /* When a reference to SYMBOL is encountered, the linker will emit awarning message MSG. *//* We want the .gnu.warning.SYMBOL section to be u

PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0

服务器突然出现这种提示,无法上传文件和图片,怎么解决? PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0 1.因为php.ini中没有设置上传的临时文件,默认为系统的临时文件地址。 2.如果没有权限去读系统的临时文件目录的话就会产生上述错误。 解决的方法就

petalinux,Zynq UltraScale+ MPSoC;WARNING: Failed to load PMUFW, doesn't exist in pre-built.

petalinux-package --pmufw ./images/linux/pmufw.elf 这个参数貌似没有生效; 解决办法: cp images/linux/pmufw.elf ./pre-built/linux/images/

Gtk-WARNING **: cannot open display问题的解决

1. SDL安装 2. ssh连接配置,x11forwarding 与VNC方式不同,qemu-kvm利用图形界面方式开启虚拟机,会以弹出窗口的方式与虚拟机交互。某些情况下,工作环境是通过各种term程序利用ssh登录到服务器,这时执行qemu的启动程序,通常会产生“Gtk-WARNING **: cannot open display”的错误。 造成这种情况的原因

启动redis提醒WARNING overcommit_memory is set to 0!Background save may fail under low memory condition.

前言 本人在Centos7服务器上启动redis,报如下问题: WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and the