zoukankan      html  css  js  c++  java
  • 《C++ Primer》

    要运行一个最简单的C++程序,按照书上的代码写完

    int main()
    
    {
    
      reutrn 0;
    
    }

    保存为test1.cc

    根据书上命令, windows下用cl.exe进行编译,那个l是小写的L,应该是compile + link的意思,当年学C的时候,这两个命令是分开的。

    首先要确保已经安装的C++的开发环境,我安装的是VS2017版的C++。

    cl.exe在D:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023inHostx64x64

    为了方便调用,可以把这个路径加入到系统环境变量path。

    打开CMD,进入我写的代码目录,执行cl test1.cc,分多次报以下错误:

    LINK : fatal error LNK1104: 无法打开文件“LIBCMT.lib”
    LINK : fatal error LNK1104: 无法打开文件“oldnames.lib”
    LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”
    LINK : fatal error LNK1104: 无法打开文件“libvcruntime.lib”
    LINK : fatal error LNK1104: 无法打开文件“libucrt.lib”
    LINK : fatal error LNK1104: 无法打开文件“Uuid.lib”

    网上找到的都是以VS项目为基础的设置。

    我还没有在VS中建立项目,只是调用一下编译器,此路不通。

    其实和C一样,只要把这些文件复制到代码目录就可以了。

    D:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023libx64oldnames.lib
    D:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023libx64libcmt.lib
    C:Program Files (x86)Windows Kits10Lib10.0.17763.0umx64kernel32.lib
    D:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023libx64libvcruntime.lib
    C:Program Files (x86)Windows Kits10Lib10.0.10240.0ucrtx64libucrt.lib
    C:Program Files (x86)Windows Kits10Lib10.0.17763.0umx64Uuid.Lib

    说来也奇怪,把这些路径加入到Path中,并没有效果,依然是找不到,看来编译器并没有读取path设置

    复制到我的程序所在目录以后,编译就通过了。但此时的目录大小已达到71m

    堂堂C++程序,不到1k,环境需要71M,有点搞笑了,目前还不知道是哪里的问题。

    约半小时以后

    现在知道问题出在哪里了。

    问题出在,设置环境变量的时候,不能把那些路径加到path中去,而是要增加一个单独命名的变量,叫Lib,只能这三个字母,其它名字不行,大小写不敏感。

    这样加了以后,就不必把那些文件复制到代码目录下了。

    据我分析,如果用VS编译,这些动作会由VS自动完成,现在我用命令行,所以只能由我手动完成。留下一个悬念,以后用VS编译项目的时候,做一个测试进行验证。

  • 相关阅读:
    20191024-1 每周例行报告
    萌猿纵横字谜引擎实现过程
    Blender插件加载研究
    Blender插件初始化范例
    Blender插件编写指南
    Blender之Property
    Blender之UILayout
    Blender插件之Panel
    Blender插件之操作器(Operator)实战
    向量之基底
  • 原文地址:https://www.cnblogs.com/Sabre/p/14254560.html
Copyright © 2011-2022 走看看