以前,我是在linux下使用命令或者makefile来编译C++程序的,最近需要在windows上做点测试。于是使用ms VS来作为开发工具,这种大揽全包的IDE确实好用:点一下菜单,编译结果就出来了。可是我的测试需要知道这些编译和连接到底怎样处理的。于是,在网上找了找,自己做了个测试。以下是记录使用ms VS的命令来编译和连接C++程序。备参考。

源代码:

#include <map>

using namespace std;

int main (int argc, char **argv)
{
cout<<__FILE__<<":"<<__LINE__<<"\t"<<__FUNCTION__<<"\tprocess begin at "<<(void*)main<<endl; map<string,int> mpa;
mpa.insert(make_pair("key1",));
mpa.insert(make_pair("key2",));
mpa.insert(make_pair("key3",));
for(map<string, int>::iterator itr = mpa.begin(); itr != mpa.end(); itr++ )
{
cout<<itr->first<<"\t"<<itr->second<<endl;
} cout<<mpa.find("key1")->second<<endl;
mpa.find("key1")->second = ;
cout<<mpa.find("key1")->second<<endl; cout<<"========================"<<endl; map<string,int>::iterator itr = mpa.find("key1");
if (itr != mpa.end())
{
itr->second = ;
}
cout<<mpa.find("key1")->second<<endl;
//下面的程序会core
//cout<<mpa.find("key12")->second<<endl; system("pause"); return ;
}

--编译
cl /c -I"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include" basic_main.cpp

--连接
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\libcpmt.lib" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\libcmt.lib" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\oldnames.lib" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\Kernel32.Lib" basic_main.obj

-- 编译和连接同时进行
cl /FA -I"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\libcpmt.lib" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\libcmt.lib" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\oldnames.lib" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\Kernel32.Lib" basic_main.cpp

编译后的结果就是在cpp所在的目录有一个basic_main.exe,命令行运行即可。结果略。
根据命令看,是不是和linux下面的操作很像呢?

使用环境变量配置的方式来简化命令

在网上查了另外一种比较简单的使用命令的办法。就是把程序所需要的头文件和库文件,都设置在环境变量里。具体如下:
头文件
INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"
库文件
LIB="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib";"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib"

然后在打开新的命令行窗口并编译程序:
cl basic_main.cpp
这样,同样可以生成出可执行程序。

使用MS VS的命令来编译C++程序的更多相关文章

  1. win10 uwp 使用 msbuild 命令行编译 UWP 程序

    原文:win10 uwp 使用 msbuild 命令行编译 UWP 程序 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http:// ...

  2. 使用命令行编译Qt程序

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  3. 【Qt】命令行编译Qt程序(nmake)【转】

    简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ...

  4. 命令行编译C++程序

        使用命令行来编译C++程序,我们可以有两种方法:     方法一:     1. 依次打开开始程序->Visual Studio 2010 –>Visual Studio tool ...

  5. 如何用命令行编译c++程序

    作为程序员,如果仅仅只懂得如何在IDE上拖控件写程序,而不知道如何直接通过编译器编译程序的话.虽然说也没啥大不了的,但是如果掌握了手动编译的技能,那肯定会是一种炫技般的存在.从客观的角度来讲,一方面, ...

  6. 用cmd命令行编译JAVA程序时出现“找不到或无法加载主类”

    今天复习Java基础知识时,使用cmd命令窗口进行编译Java文件发现了如下问题: 网上有很多的解决方法,和问题出现的讨论,以下方法是解决我出现这个问题方式. 解决方式: 重点是圈住的部分. 下面是我 ...

  7. java 命令行 编译 运行程序

    学习java使用IDE前最好先用用命令行的javac.java来跑一跑简单的程序,这样能够熟悉一下包管理对.class文件路径的影响. 我们先写一段简单的代码: package com.csdn.lk ...

  8. 怎样用命令行编译C#程序

    1. 把程序拷贝至记事本 2.另存为*cs格式 3.找到VS2015提供的命令提示 4.要把命令行指向程序所在的目录(可以有个小软件) 如果在其他的盘符,先敲D:,然后再cd 5.输入csc hell ...

  9. 命令行编译C程序

    1 准备工作 下载mingw-get-setup.exe并且安装  参考 http://www.jb51.net/softjc/159871.html 环境变量更新: PATH .;C:\MinGW\ ...

随机推荐

  1. Storm--命令行解析

    strom的命令行解析 Commands: activate classpath deactivate dev-zookeeper drpc help jar kill list localconfv ...

  2. js获取iframe和父级之间元素,方法、属,获取iframe的高度自适应iframe高度

    摘自:http://blog.csdn.net/kongjiea/article/details/38870399 1.在父页面 获取iframe子页面的元素 (在同域的情况下 且在http://下测 ...

  3. javascript Date对象 之 获取时间

    javascript Date对象 --> 获取时间: 测试代码: <!DOCTYPE html> <html lang="en"> <head ...

  4. zabbix监控windows

    windows  版zabbix_agent下载地址: https://www.zabbix.com/download_agents 解压,有bin和conf两个文件夹 配置: 在windows被监控 ...

  5. struts2——文件下载(简单的功能)

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. Spring中Bean的生命周期是怎样的

    1.Spring对Bean进行实例化(相当于程序中的new Xx()) 2.Spring将值和Bean的引用注入进Bean对应的属性中 3.如果Bean实现了BeanNameAware接口,Sprin ...

  7. 关于JDK1.8 HashMap扩容部分源码分析

    今天回顾hashmap源码的时候发现一个很有意思的地方,那就是jdk1.8在hashmap扩容上面的优化. 首先大家可能都知道,1.8比1.7多出了一个红黑树化的操作,当然在扩容的时候也要对红黑树进行 ...

  8. python基础8 - 变量2

    1. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开 ...

  9. python学习笔记(pip下载安装)

    python有很多扩展模块需要安装 这个时候万能的pip就可以提供帮助 首页进入官网下载压缩包: https://pypi.python.org/pypi/pip#downloads 解压文件 cmd ...

  10. Shell 概述、截取字符操作等

    Shell 是用C语言编写的程序,便于用户与Linux内核系统进行交互. Linux的Shell种类众多,常见的有: Bourne Again Shell (/bin/bash) Bourne She ...