zoukankan      html  css  js  c++  java
  • CodeBlocks 16.01 升级到 CodeBlocks 20.03 后的一些感受

    最近为了编写64位的应用程序,我把 CodeBlocks 16.01 升级到 CodeBlocks 20.03

    CodeBlocks 16.01 自带的 gcc 是 tdm-gcc 4.9.2

    CodeBlocks 20.03 自带的 gcc 是 w64-mingw32-gcc 8.1.0

    使用 CodeBlocks 20.03 自带的 w64-mingw32-gcc 8.1.0 重新编译过去写的代码,有很多新的代码警告提示,竟然还找到了一处指针错误代码(返回局部变量的指针),新版本的gcc确实很给力。

    注意:编译器由原来的 tdm-gcc 4.9.2 变成 w64-mingw32-gcc 8.1.0 后,编译出来的应用程序运行时需要依赖3个dll文件

    64位应用程序依赖3个dll文件分别是

    libgcc_s_seh-1.dll
    libwinpthread-1.dll
    libstdc++-6.dll

    32位应用程序依赖3个dll文件分别是

    libgcc_s_dw2-1.dll
    libwinpthread-1.dll
    libstdc++-6.dll

    由于以前用 tdm-gcc 好几年,编译生成的应用程序不需要依赖这3个dll文件,为了编译出的应用程序不依赖这3外dll文件,我又尝试下载了 tdm-gcc 9.2,官网下载:https://jmeubank.github.io/tdm-gcc/

    下载后,为 CodeBlocks 20.03 配置好相关的编译路径后:

    使用 tdm-gcc 9.2 重新编译之前的代码,直接报了多处错误提示:

    然后编辑文件:TDM-GCC-9.2-32includesdkddkver.h

    #ifndef _WIN32_WINNT
    # ifdef WINVER
    #  define _WIN32_WINNT WINVER
    # else
    #  ifdef _WARN_DEFAULTS
    #   warning "Assuming default setting of _WIN32_WINNT_WIN2K for _WIN32_WINNT"
    #  endif
    #  define _WIN32_WINNT  _WIN32_WINNT_WIN2K
    # endif
    #endif

    _WIN32_WINNT 默认是 _WIN32_WINNT_WIN2K,修改为: 0x0501  (win xp)

    #ifndef _WIN32_WINNT
    # ifdef WINVER
    #  define _WIN32_WINNT WINVER
    # else
    #  ifdef _WARN_DEFAULTS
    #   warning "Assuming default setting of _WIN32_WINNT_WIN2K for _WIN32_WINNT"
    #  endif
    #  define _WIN32_WINNT  0x0501
    # endif
    #endif

    重新编译,在快要编译完成的时候,360 弹出安全对话框,说什么 collect.. 之类的存在安全风险。

    吓的我没敢继续。

    我又想起 CodeBlocks  17.02 这个版本自带的是 tdm-gcc 5.1,我又在另一台电脑上安装了这个版本,然后提取 tdm-gcc 5.1,重新编译的代码,又提示这个错误:

    关于这个错误,我有印像,以前也有,好像重新定义一个.h 文件中的宏定义就行了。

    可我实在不想再改代码了,就放弃了。

    -----------------------------------------------------------------------------------------------------------------------

    以后,就只使用 CodeBlocks 20.03 自带的  w64-mingw32-gcc 8.1.0 来编译吧,就算编译出来的应用程序需要依赖那3个dll,但至少代码这一块我不需要改动太多,从代码维护角度看,省心一些吧。

  • 相关阅读:
    CentOS虚拟机和物理机共享文件夹实现
    集训第六周 数学概念与方法 概率 数论 最大公约数 G题
    集训第六周 数学概念与方法 概率 F题
    集训第六周 E题
    集训第六周 古典概型 期望 D题 Discovering Gold 期望
    集训第六周 古典概型 期望 C题
    集训第六周 数学概念与方法 UVA 11181 条件概率
    集训第六周 数学概念与方法 UVA 11722 几何概型
    DAG模型(矩形嵌套)
    集训第五周 动态规划 K题 背包
  • 原文地址:https://www.cnblogs.com/personnel/p/14254145.html
Copyright © 2011-2022 走看看