用个最简单的程序说明我的问题吧:
#include <stdio.h>int main(int argc, char *argv[])
{
printf("how do you do\n");
return 0;
}问题:
stdio.h在系统中位于VC的include目录底下,就我的系统而言是:
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\打开之后可以找到printf的声明:
_CRTIMP int __cdecl printf(const char *, ...);当我们连接(link)的时候,由于stdio.h里面的所有函数都是声明,肯定要找它对应的库文件(lib或者dll)。问了来了,编译器是这样找到的?首先我知道是在VC配置环境下面:Tool-》options-》directories下面开始找。
有俩个办法可以指定连接时库文件名称,一是在project-》link-》写入库文件名称。二是可以在程序代码中写入预处理:
#pragma comment( lib, "path" ).这样link的时候,都可以找到相应的printf函数体,进行连接编译。现在的问题是,我做了上面的一个最简单程序,把project-》link-》配置里面的库文件都给删除了,而且我在stdio.h里面找不到关于#pragma comment的预处理,但是我clean之后,重新编译,仍然可以编译,然后我通过试验,发现他连接的是libcd.lib这个文件,我和疑惑,疑惑编译器如果找到这个文件的。难道是默认的?
不知道那位高手能帮我解答这个问题。感激不尽。
#include <stdio.h>int main(int argc, char *argv[])
{
printf("how do you do\n");
return 0;
}问题:
stdio.h在系统中位于VC的include目录底下,就我的系统而言是:
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\打开之后可以找到printf的声明:
_CRTIMP int __cdecl printf(const char *, ...);当我们连接(link)的时候,由于stdio.h里面的所有函数都是声明,肯定要找它对应的库文件(lib或者dll)。问了来了,编译器是这样找到的?首先我知道是在VC配置环境下面:Tool-》options-》directories下面开始找。
有俩个办法可以指定连接时库文件名称,一是在project-》link-》写入库文件名称。二是可以在程序代码中写入预处理:
#pragma comment( lib, "path" ).这样link的时候,都可以找到相应的printf函数体,进行连接编译。现在的问题是,我做了上面的一个最简单程序,把project-》link-》配置里面的库文件都给删除了,而且我在stdio.h里面找不到关于#pragma comment的预处理,但是我clean之后,重新编译,仍然可以编译,然后我通过试验,发现他连接的是libcd.lib这个文件,我和疑惑,疑惑编译器如果找到这个文件的。难道是默认的?
不知道那位高手能帮我解答这个问题。感激不尽。
解决方案 »
- VS2008提交表单到php网页?
- 新人求问MFC扩展界面库的问题
- 求助:对话框程序中Send信息后如何等待返回信息后再执行下面的语句.(Receive在另外一个函数)
- 请教: socket通信中,服务器端可否主动向客户端申请连接?。。
- Win32编程:关于命令行参数(不算有难度,测验一下您对VC的熟悉程度吧!)
- 问个《windows程序设计》上的一个例子
- 求助:怎样隐藏标题栏,菜单栏?
- 这样到底能不能达到5ms的精度定时?
- 对话框问题?
- 哪有允许下载10M内容的免费网站(最好还能提供计数器及留言等功能)
- 同样是#pragma comment(lib, "****.lib"),为什么有的运行时需要dll,有的不需要?
- 本人就要跳槽去瑞星了,有几个问题想请教?
tools -- options -- directories -- library files
下的目录?stdio.h对应的库为libc.lib