C++ 控制台程序,窗口程序,静态库,动态库的区别

创建C++程序

控制台程序 

创建完成发现编译器给我们生成了一个.cpp文件,并且存在main函数(说明可以运行)

 按F5编译链接并运行 出现DOS窗口(但我们说写与窗口相关的代码,说明是操作系统提供的)

 输出目录生成的文件

窗口程序

创建完成我们发现生成了许多文件

 打开.cpp文件我们发现了许多处理窗口的代码,并包含一个main函数

F5运行生成了一个新窗口(该窗口由我们自己定义),并且可以与用户交互 

 输出目录生成的文件

 静态库程序

静态库程序一般用来存放代码或者数据,可以执行文件可以获取静态库程序的数据

 生成完发现静态库程序并没有main函数

 按F5发现编译链接成功,但无法启动程序(因为没有main函数)

 输出目录生成的文件

动态库程序

 创建成功发现动态库程序也是存在入口函数的(DLLMain)

F5运行出现于静态库程序一样的错误,并且编译链接都已完成,

 输出目录生成的文件

对比结果

        1:入口函数

                控制台程序 - main

                窗口程序 - WinMain

                动态库程序 - DllMain

                静态库程序 - 无口函数

        2:生成的产物                

                控制台程序 - exe文件

                窗口程序 - exe文件

                动态库程序 - DLL文件

                静态库程序 - Lib文件

        3:作用                

                控制台程序 - DOS程序,本身没有窗口,通过系统提供的DOS窗口执行

                窗口程序 - 拥有自己的窗口,并可以与用户交互

                动态库程序 - 存放代码和和数据,供可执行文件调用,

                静态库程序 - 存放代码和和数据,供可执行文件调用

        4:静态库与动态库的区别

                静态库:编译器在编译链接时会把在使用静态库的地方,将源码从静态库中原封不动的拷贝到可执行文件中(exe),这将会导致.exe文件体积变大,由于是拷贝的源码,所以在发布后并不需要静态库的支持就可以运行。                                

                动态库:当可执行文件在运行时使用到了动态库,此时会在该进程的某个地址加载该动态库,提取所需要的函数或数据,若使用之后在不需要的时候也可以卸载(使用动态库里的某个函数),并且可以被多个进程调用,由于是动态加载,在发布时并没有添加到可执行文件中,所以体积会小一些。并且具有强依赖关系。

                   静态库不能在包含其他的动态库文件或者静态库文件。而动态库却可以。

        

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态库静态库的编写方式基本相同,只是在编译链接时需要采用不同的方式。以下是C++动态库静态库的编写方法: ### 静态库 1. 创建静态库项目:打开Visual Studio,选择“新建项目”,然后选择“Win32控制台应用程序”,输入项目名称和路径,点击“确定”按钮。在弹出的窗口中选择“静态库”类型,然后点击“下一步”按钮,最后点击“完成”按钮。 2. 编写库文件代码:在项目中添加源文件,编写库文件的代码,并在头文件中声明需要导出的函数和类。 3. 生成静态库文件:在编译链接时将代码编译成静态库文件,可以手动编译或在Visual Studio中配置。在Visual Studio中,可以选择“生成”菜单中的“生成解决方案”或“生成项目”命令生成静态库文件。生成的静态库文件通常以.lib为扩展名。 4. 使用静态库:在使用静态库的应用程序中,需要在编译链接时将静态库文件链接到可执行文件中。可以在应用程序的项目属性中配置链接选项,将静态库文件添加到链接器的附加依赖项中。在代码中包含头文件即可使用静态库中的函数和类。 ### 动态库 1. 创建动态库项目:打开Visual Studio,选择“新建项目”,然后选择“Win32控制台应用程序”,输入项目名称和路径,点击“确定”按钮。在弹出的窗口中选择“动态链接库(DLL)”类型,然后点击“下一步”按钮,最后点击“完成”按钮。 2. 编写库文件代码:在项目中添加源文件,编写库文件的代码,并在头文件中声明需要导出的函数和类。需要使用__declspec(dllexport)关键字将需要导出的函数或类标记为可导出。 3. 生成动态库文件:在编译链接时将代码编译成动态库文件,可以手动编译或在Visual Studio中配置。在Visual Studio中,可以选择“生成”菜单中的“生成解决方案”或“生成项目”命令生成动态库文件。生成的动态库文件通常以.dll为扩展名。 4. 使用动态库:在使用动态库的应用程序中,需要在运行时加载动态库文件,并使用GetProcAddress函数获取动态库中需要使用的函数或类。在代码中包含头文件即可使用动态库中的函数和类。在编译链接时需要指定动态库文件的路径和名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值