请问一下有关LIB和头文件的问题

monk_CD 2012-02-28 02:24:24


通常我们编程的时候,会包含一些头文件,像:#include<iostream>, 这时只包含了这个头文件,所以一定要有实现的代码,一般实现的代码的文件都是以lib和DLL结尾的文件,所以我们要在编译器中使用lib,有2种方法,一种是像:#pragram comment(lib,"xxx.lib"),一种是在附加依赖项中指定要使用的LIB!


但是我只在编译器中的附加依赖项中看到了:
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib

这几个默认的LIB,并没有看到类似iostream.lib形式的链接库,那编译器是怎么知道iostream这个其中的实现代码呢?难道我上面列出的几个默认LIB,其中包含了实现iostream的代码?

我不是很清楚,请懂的朋友指点一下,先感谢!
...全文
246 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qweewqpkn2009 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hongwenjun 的回复:]

C/C++ code
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.40219.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

C/C++ 编译器选项


-优化-

/O1 最小化空间 ……
[/Quote]
感谢!
hongwenjun 2012-02-28
  • 打赏
  • 举报
回复
用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.40219.01 版
版权所有(C) Microsoft Corporation。保留所有权利。

C/C++ 编译器选项


-优化-

/O1 最小化空间 /O2 最大化速度
/Ob<n> 内联扩展(默认 n=0) /Od 禁用优化(默认)
/Og 启用全局优化 /Oi[-] 启用内部函数
/Os 优选代码空间 /Ot 优选代码速度
/Ox 最大化优化 /Oy[-] 启用帧指针省略

-链接-

/LD 创建 .DLL /LDd 创建 .DLL 调试库
/LN 创建 .netmodule /F<num> 设置堆栈大小
/link [链接器选项和库] /MD 与 MSVCRT.LIB 链接
/MT 与 LIBCMT.LIB 链接 /MDd 与 MSVCRTD.LIB 调试库链接
/MTd 与 LIBCMTD.LIB 调试库链接


使用动态库链接 /MD 与 MSVCRT.LIB 链接
cl /MD main.cpp
2012-02-28 19:46 8,704 main.exe

命令行cl默认使用静态库 /MT 与 LIBCMT.LIB 链接
cl /MT main.cpp
2012-02-28 19:47 99,328 main.exe
hongwenjun 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qweewqpkn 的回复:]

引用 2 楼 hongwenjun 的回复:

标准C库 使用 C RunTime msvcrt.lib
标准C++库 使用 C++ RunTime msvcprt.lib


怎么不用DLL,DLL比lib多那么多的优点!!!??WHY?
[/Quote]

VC2010 编译器 建立使用动态库的 C++ 控制台程序,是链接 msvcrt.lib 和 msvcprt.lib
运行时候时候需要 msvcr100.dll msvcp100.dll (VC2010是 VC 10.0)

VC2010 编译器 建立使用静态库的 C++ 控制台程序,是链接 libcmt.lib 和 libcpmt.lib
运行时候时候不需要 msvcr100.dll msvcp100.dll

#include <iostream>

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}


动态库的编译命令 和输出大小是 7.5KB
[ 50.0%] cl.exe /nologo /W3 /EHsc  /Ox /DNDEBUG /MD    /IC:\CodeBlocks\build\vc\include /I"C:\Program Files\Microsoft Visual Studio 10.0\VC\include"  /c main.cpp /Foobj\Release\main.obj
[100.0%] link.exe /nologo /LIBPATH:C:\CodeBlocks\build\vc\lib /LIBPATH:"C:\Program Files\Microsoft Visual Studio 10.0\VC\lib" /out:bin\Release\vc.exe msvcrt.lib msvcprt.lib Gdi32.lib user32.lib Kernel32.lib obj\Release\main.obj
main.cpp
Output size is 7.50 KB



静态库的编译命令 和输出大小是 96.00 KB ,没有 VC10的运行时的电脑上也可以执行
[ 50.0%] cl.exe /nologo /W3 /EHsc  /Ox /DNDEBUG /MT    /IC:\CodeBlocks\build\vc\include /I"C:\Program Files\Microsoft Visual Studio 10.0\VC\include"  /c main.cpp /Foobj\Release\main.obj
[100.0%] link.exe /nologo /LIBPATH:C:\CodeBlocks\build\vc\lib /LIBPATH:"C:\Program Files\Microsoft Visual Studio 10.0\VC\lib" /out:bin\Release\33.exe libcmt.lib libcpmt.lib Gdi32.lib user32.lib Kernel32.lib obj\Release\main.obj
main.cpp
Output size is 96.00 KB



monk_CD 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cbzjzsb123 的回复:]

标准C库 使用 C RunTime msvcrt.lib
标准C++库 使用 C++ RunTime msvcprt.lib
[/Quote]

VS2010在附加依赖项中没有看到 msvcprt.lib msvcrt.lib 这些东西呢?
??
如果是系统库的lib, 是不是编译器会自动找到这些头文件的实现!

而当LIB时我们自己提供的时候,就要在附加依赖项中显示的指明??
monk_CD 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hongwenjun 的回复:]

标准C库 使用 C RunTime msvcrt.lib
标准C++库 使用 C++ RunTime msvcprt.lib
[/Quote]

怎么不用DLL,DLL比lib多那么多的优点!!!??WHY?

cbzjzsb123 2012-02-28
  • 打赏
  • 举报
回复
标准C库 使用 C RunTime msvcrt.lib
标准C++库 使用 C++ RunTime msvcprt.lib

hongwenjun 2012-02-28
  • 打赏
  • 举报
回复
标准C库 使用 C RunTime msvcrt.lib
标准C++库 使用 C++ RunTime msvcprt.lib

内容概要:本文围绕柔性机器人执行器的建模与控制算法展开研究,提出了一种基于Matlab代码实现的方法,能够从多个参数集中批量生成即用型关节执行器模型类。该模型充分考虑了柔性执行器中的多种非线性动力学效应,如弹性变形、迟滞特性、摩擦与阻尼等,提升了模型在实际工况下的精度与适用性。研究不仅实现了模块化、可复用的建模范式,还为后续控制器设计提供了高保真仿真基础,有效支撑柔性机器人系统的动态性能分析与优化控制策略验证。; 适合人群:具备一定机器人动力学与控制理论基础,熟悉Matlab/Simulink仿真环境,从事柔性机器人、精密执行器或智能结构系统研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 快速构建面向不同物理参数的柔性执行器仿真模型,提升科研效率;② 深入分析非线性动力学效应对系统性能的影响机制;③ 验证先进控制算法(如自适应控制、鲁棒控制、智能控制)在高精度柔顺控制中的有效性; 阅读建议:建议读者结合文中提供的Matlab代码实例,动手实践模型构建流程,重点关注参数化接口设计与非线性项的数学表征方式,并尝试扩展至多自由度系统或硬件在环实验平台以深化理解。
已经博主授权,源码转载自 https://pan.quark.cn/s/fa4d4dc3106f 在本研发计划中,“UE4配备AI的汽车能够自主运行”,这表明我们当前的研究重点是运用Unreal Engine 4(缩写为UE4)构建的具备人工智能(AI)技术的自动驾驶汽车仿真系统。Unreal Engine 4是一款功能卓越的游戏构建平台,其应用广泛涵盖游戏设计、虚拟现实(VR)、增强现实(AR)以及即时视觉呈现等多个方面。其卓越的图形处理能力和高度可编程的脚本架构使其成为构建复杂交互式场景的优选工具,特别是用于模拟自动驾驶汽车。通过UE4的赛车主题标识,可以明确该项目集中于汽车竞赛场景。在Unreal Engine 4环境中,开发者能够建立精细化的赛道布局,并模拟现实世界的物理现象,包括摩擦系数、重力作用和空气动力学效应,从而为人工智能控制的车辆创造一个高度仿真的驾驶条件。借助定制的人工智能控制器蓝图,我们可以使汽车遵循既定的驾驶策略操作,例如规避障碍、维持速度以及路径导航。UE4汽车人工智能的标签凸显了此项目的关键——人工智能技术的核心应用。在此研发计划中,人工智能或许综合运用了路径规划、决策管理和感知技术来操控车辆的运行。常规的做法包括采用行为树(Behavior Tree)来设定车辆的行为模式,整合传感器信息(例如雷达探测和图像捕捉)以获取环境信息,以及运用路径规划方法(比如A*搜索算法)来确定最优的行驶路线。UE4人工智能运动学标识指出,人工智能不仅限于静态策略的制定,还涉及到动态操控,诸如车速的调节和方向控制。人工智能或许通过模拟驾驶动力学来实现这些动态功能,确保车辆在行驶期间保持稳定性,并能够对道路状况的变化做出即时响应。项目中的“CarAIProject”...

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧