博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
Visual Studio中的C,C++运行时库,动态链接库,静态链接库
下面这个例子演示了在不同编译选项时,所使用的C,C++运行时库:
makefile
---------------------------------------------------
all:test test_static test_dynamic
#默认:多线程静态链接
test:
cl test.cpp /link user32.lib /out:test.exe
#多线程静态链接
#libcmt.lib C运行时静态库
#libcpmt.lib C++运行时静态库
test_static:
cl /MT test.cpp /link /NODEFAULTLIB libcmt.lib libcpmt.lib \
Kernel32.lib user32.lib /out:test_static.exe
#多线程动态链接
#msvcrt.lib C运行时导入库,执行期依赖于MSVCR90.dll
#msvcprt.lib C++运行时导入库,执行期依赖于MSVCP90.dll
test_dynamic:
cl /MD test.cpp /link /NODEFAULTLIB msvcrt.lib msvcprt.lib \
Kernel32.lib user32.lib /out:test_dynamic.exe
clean:
del test.exe
del test_static.exe
del test_dynamic.exe
del test_dynamic.exe.manifest
del test.obj
#备注:
# /NODEFAULTLIB 选项忽略所有编译器默认链接的库。
# 用 dumpbin /DEPENDENTS test.exe 命令查看可执行文件的依赖关系。
# 示例程序使用 Visual Studio 2008 SP1 命令行编译。
test.cpp
----------------------------------------------------------
#include <stdio.h>
#include <iostream>
using namespace std;
#include <windows.h>
int main()
{
//C运行时函数
printf("Hello Runtime Library.\n");
#ifdef _MT
//C++运行时对象
cout<<"/MT:_MT"<<endl;
#endif
#ifdef _DLL
cout<<"/MD:_MT,_DLL"<<endl;
#endif
//C,C++运行时以外的函数
//MessageBox的导入库是 user32.lib,执行期依赖于 USER32.dll
MessageBox(0,"Hello Windows.","test",0);
return 0;
}
分类:Win32/C++ 查看次数:9095 发布时间:2012/4/19 23:55:05