c++ 之自己写库函数 (静态库)

本文详细介绍了C++库的类型及其在Win32应用程序中的使用方法,包括静态库的优势与不足,以及Win32ConsoleApplication与Win32Application的区别。此外,还通过一个具体的例子展示了如何创建并使用C++库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++ 库函数,分为静态库,静态库的好处就是没有太多约束,静态库写的类,可以被集成。缺点是,代码是直接编译到目标文件里面,所以代码量会增加

库函数分为 Win32 Application和Win32 Console Application 和MFC  库。

Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序。

         Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它,它与纯dos程序区别是:它是32位的;或者叫CUI(Character User Interface字符用户接口)。console程序以main()为入口,可以访问部分windows API函数,比如创建窗口、对话框等等。

     Win32 Application 是标准 windows程序,完全拥有windows的特性,也即我们常说的窗口应用程序。Win32 Application的入口函数为WinMain。

MFC 库,会附带一些节目的接口函数 MFC 需要的DLL 文件。别人用起来不方便。

所以大多数情况下,建议写 Win32 Console Application  库。

步骤方法:




然后往工程添加一个资源文件。

#pragma once
class MTcpSock_lib
{
public:
int  test();
MTcpSock_lib(void);
~MTcpSock_lib(void);
};


/*****************************************end of MTcpSocklib.h ****************************/


#include "StdAfx.h"
#include "MTcpSocklib.h"

MTcpSock_lib::MTcpSock_lib(void)
{
}




MTcpSock_lib::~MTcpSock_lib(void)
{
}
int MTcpSock_lib:: test()
{


return 100;
 }

/*****************************************end of MTcpSock_lib.cpp ****************************/


然后编译 在 DEUBG 里面生成我们所需要的库TcpSock.lib

库的运用:库其实就是可以免去 .cpp文件,其他的头文件都要拷贝

将生成的库TcpSock.lib添加到另外工程里面,和#include "MTcpSock_lib.h" 也要添加到我们所需要的工程里面

                                     

### 创建自定义C++库函数 为了在Visual Studio Code (VSCode)创建并使用自定义C++库函数,需遵循一系列开发实践。这涉及编源代码、编译成静态或动态链接库以及在其他项目中引用这些库。 #### 准备工作环境 安装必要的工具链对于构建C++程序至关重要。确保已安装了支持C++的标准编译器如GCC或Clang,并配置好VSCode的工作区以便能够执行编译命令[^2]。 #### 编头文件与实现文件 1. **创建头文件(.h)**:定义公共接口,即声明类成员变量和方法原型。 ```cpp // my_library.h #ifndef MY_LIBRARY_H_ #define MY_LIBRARY_H_ class MyLibrary { public: void say_hello(); }; #endif // MY_LIBRARY_H_ ``` 2. **创建实现文件(.cpp)**:提供上述声明的具体实现逻辑 ```cpp // my_library.cpp #include "my_library.h" #include <iostream> void MyLibrary::say_hello() { std::cout << "Hello from My Library!" << std::endl; } ``` #### 构建共享/静态库 利用`g++` 或 `clang++` 来编译生成`.a`(静态库) 或 `.so`(Linux下的动态库)/`.dll`(Windows下的动态库),并将它们放置于适当位置供后续链接使用[^1]。 - 对于静态库: ```bash g++ -c my_library.cpp -o my_library.o ar rcs libmy_library.a my_library.o ``` - 动态库(假设是在Linux环境下操作): ```bash g++ -shared -fPIC -o libmy_library.so my_library.cpp ``` #### 配置VSCode以集成新创建的库 编辑项目的`tasks.json` 和 `launch.json` 文件来指定预处理器宏定义、包含路径和其他编译选项;同时调整`c_cpp_properties.json`中的设置让IntelliSense理解新的依赖关系[^3]。 ```json // tasks.json snippet { "label": "build", "command": "/usr/bin/g++", "args": [ "-g", "${workspaceFolder}/main.cpp", "-I${workspaceFolder}", "-L${workspaceFolder}", "-lmy_library", "-o", "${workspaceFolder}/app" ] } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值