关于api函数的问题
我最近接触了MFC,也用它编写了一些基于windows的程序,但是越来越好奇的就是,微软给开发者留了大量的api函数以使用windows的一些功能,比如按照MSDN的说明...
我最近接触了MFC,也用它编写了一些基于windows的程序,但是越来越好奇的就是,微软给开发者留了大量的api函数以使用windows的一些功能,比如按照MSDN的说明,调用一个函数就能实现系统托盘,等等。
我的疑问就是一个操作系统那个的api只是调用其自身拥有的功能的接口,但是究竟函数的完整实现的源代码在哪里写着呢?是那些不能看的lib里面写着吗?还是别处在那里写着?
还有像windows操作系统的源代码使用哪种语言编写的呢?
呵呵~~当然微软没有开源,大概给我说说就行啊,我懂的不多,还得多请教各位了~~~谢谢 展开
我的疑问就是一个操作系统那个的api只是调用其自身拥有的功能的接口,但是究竟函数的完整实现的源代码在哪里写着呢?是那些不能看的lib里面写着吗?还是别处在那里写着?
还有像windows操作系统的源代码使用哪种语言编写的呢?
呵呵~~当然微软没有开源,大概给我说说就行啊,我懂的不多,还得多请教各位了~~~谢谢 展开
展开全部
源代码在微软的保险箱里。
windows api 的执行要走好多层,才能走到真正要执行的代码部分。
在用户层看到的所有api,最终都指向 kerner32.dll/user32.dll/gdi32.dll 几个库文件。(当然这几个文件都只是stub,绝大多数api的核心代码在内核级的几个库里面)。
动态库的 lib 类似于 h文件,只是导出函数、变量、类的声明而已。里面没用代码。(你的exe如果引用了这个lib,运行时候,必须有这个lib相关的dll才能正确执行)。
纯静态lib,包含有二进制代码+导出头。运行时候不需要相关的dll文件。
用MFC编程的话,使用的是ms的几个库文件 mfc71.dll (MFC核心库)。msvcrtxx.dll(微软运行时库),还有其他的几个库。MFC库是实现了MFC编程使用的对话框SDI/MDI,线程模型等等所有的扩展实现,但是内部还是调用了操作系统的API,比如创建窗口,最终还是使用的系统API,CreateWindow函数。只不过微软给包装了一下,使编程开发方便了些。运行时库里面大部分实现的是字符串函数,数学函数,内存管理等常规必须的操作部分,这部分 ISO 也有自己的库,在VC的工程配置里面可选那种库方案。
SDK编程的话,就是直接操作系统API编程,只有就不使用mfc的库了。
windows api 的执行要走好多层,才能走到真正要执行的代码部分。
在用户层看到的所有api,最终都指向 kerner32.dll/user32.dll/gdi32.dll 几个库文件。(当然这几个文件都只是stub,绝大多数api的核心代码在内核级的几个库里面)。
动态库的 lib 类似于 h文件,只是导出函数、变量、类的声明而已。里面没用代码。(你的exe如果引用了这个lib,运行时候,必须有这个lib相关的dll才能正确执行)。
纯静态lib,包含有二进制代码+导出头。运行时候不需要相关的dll文件。
用MFC编程的话,使用的是ms的几个库文件 mfc71.dll (MFC核心库)。msvcrtxx.dll(微软运行时库),还有其他的几个库。MFC库是实现了MFC编程使用的对话框SDI/MDI,线程模型等等所有的扩展实现,但是内部还是调用了操作系统的API,比如创建窗口,最终还是使用的系统API,CreateWindow函数。只不过微软给包装了一下,使编程开发方便了些。运行时库里面大部分实现的是字符串函数,数学函数,内存管理等常规必须的操作部分,这部分 ISO 也有自己的库,在VC的工程配置里面可选那种库方案。
SDK编程的话,就是直接操作系统API编程,只有就不使用mfc的库了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询