• 解决:warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;找到 MSIL .netmodule 或使用 /GL 编译的模块;正在。。;LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)


    原文链接地址:https://www.cnblogs.com/qrlozte/p/4844411.html

    参考资料:

    http://blog.csdn.net/laogaoav/article/details/8544880

    http://stackoverflow.com/questions/18612072/link-warning-lnk4098-defaultlib-msvcrt-conflicts-with-use-of-other-libs-us

    正文:

    为了看这个 错误是怎么出来的,首先创建一个Win32工程:新建->项目->Win32项目->下一步->静态库->取名为ADDLIB

    好,添加一个类,如下

    // Adder.h
    
    #pragma once
    
    class Adder
    {
        int x, y;
    public:
        Adder(int x, int y);
        int result();
    };
    
    
    // ----------------------------------
    
    // Adder.cpp
    
    #include "Adder.h"
    
    Adder::Adder(int xx, int yy) :x(xx), y(yy)
    {
    }
    
    int Adder::result()
    {
        return x + y;
    }

    好,选择:生成->配置管理器->Release->确定

    接着,生成解决方案,现在你在项目文件夹的Release子文件夹中可以找到ADDLIB.lib

    现在,打开另一个项目,选择:项目->属性->VC++目录->包含目录->把Adder.h的路径添加进去,然后选择:库目录->把ADDLIB.lib的路径添加进去(即$(ADDLIB_PATH)DebugADDLIB.lib,其中$(ADDLIB_PATH)是你的项目根目录),然后选择:链接器->输入->附加依赖项->把ADDLIB.lib添加进去

    好现在写一段代码使用Adder,例如

    Adder a(1,2);
    int x =  a.result();

    首先确保这个项目是Debug配置,生成解决方案,报错如下:

    1> ADDLIB.lib(Adder.obj) : 找到 MSIL .netmodule 或使用 /GL 编译的模块;正在使用 /LTCG 重新启动链接;将 /LTCG 添加到链接命令行以改进链接器性能
    1>LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)
    1>MainWindow.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/OPT:LBR”规范)
    1>LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

    看到这里,有经验的话,细心一点就可以看出来,就是因为Debug版本的项目去链接Release版本的 static库造成的错误,所以解决方案就是回到 ADDLIB项目,构建一个Debug版本的ADDLIB.lib,然后这边 Debug的 时候就用DebugADDLIB.lib,在Release的时候才用ReleaseADDLIB.lib

    具体为什么是这样 报错呢,很简单,去项目属性里面查看就知道了,Debug配置的时候,C/C++ -> 优化,这个配置项里面“全程序优化”的默认选项是“否,但是在Release配置的 时候,是“是/GL”,由于不匹配,所以报错。同样的,对于C/C++ -> 代码生成,这个配置项里面“运行库”在Debug配置下默认是/MDd,但是在Release下默认是/MD,同样由于不匹配,报错

    所以坚持一个原则,无论是构建lib文件还是DLL文件,一定既要Debug的版本,也要Release的版本,而且在使用的时候一定要匹配上。才能尽可能避免这种问题。如果还是出现了类似问题,按照上面的思路去查找源头并修改你的配置即可。

  • 相关阅读:
    leetcode刷题 650~
    leetcode刷题 633~
    发送udp报文
    SIP (Session Initiation Protocol) 协议
    你所不知道的replace
    uni-app(六)生成海报图片路径问题
    uni-app(五)小程序的一些注意事项,踩坑
    uni-app(四)小程序里的vuex
    uni-app(三)组件、插件使用,引入字体
    uni-app(二)接口请求封装,全局输出api
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/9796045.html
Copyright © 2020-2023  润新知