当前位置: 首页 > news >正文

VSCode中创建和生成动态库项目

在VSCode中创建和生成动态库项目

下面我将介绍如何在VSCode中创建一个动态库项目,并配置编译环境来生成动态库(.so或.dll文件)。

1. 创建项目结构

首先,创建一个基本的项目目录结构:

my_dynamic_library/
├── include/           # 头文件
│   └── mylib.h
├── src/               # 源文件
│   └── mylib.cpp
├── test/              # 测试代码
│   └── test.cpp
└── CMakeLists.txt     # CMake构建文件

2. 编写动态库代码

mylib.h (头文件)

#ifndef MYLIB_H
#define MYLIB_H#ifdef _WIN32#ifdef MYLIB_EXPORTS#define MYLIB_API __declspec(dllexport)#else#define MYLIB_API __declspec(dllimport)#endif
#else#define MYLIB_API
#endif#ifdef __cplusplus
extern "C" {
#endifMYLIB_API int add(int a, int b);
MYLIB_API void print_message(const char* message);#ifdef __cplusplus
}
#endif#endif // MYLIB_H

mylib.cpp (源文件)

#include "mylib.h"
#include <iostream>MYLIB_API int add(int a, int b) {return a + b;
}MYLIB_API void print_message(const char* message) {std::cout << "Message: " << message << std::endl;
}

3. 配置CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyDynamicLibrary VERSION 1.0.0)# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)# 添加动态库目标
add_library(mylib SHARED src/mylib.cpp
)# 设置包含目录
target_include_directories(mylib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
)# 在Windows上定义导出宏
if(WIN32)target_compile_definitions(mylib PRIVATE MYLIB_EXPORTS)
endif()# 可选:安装规则
install(TARGETS mylibLIBRARY DESTINATION libARCHIVE DESTINATION libRUNTIME DESTINATION binINCLUDES DESTINATION include
)# 添加测试可执行文件
add_executable(test_mylib test/test.cpp)
target_link_libraries(test_mylib mylib)

4. 创建测试代码 (test/test.cpp)

#include "mylib.h"
#include <iostream>int main() {std::cout << "3 + 4 = " << add(3, 4) << std::endl;print_message("Hello from dynamic library!");return 0;
}

5. 配置VSCode环境

  1. 安装必要的扩展:

    • C/C++ (Microsoft)

    • CMake Tools (Microsoft)

  2. 创建.vscode/settings.json:

{"cmake.configureOnOpen": true,"cmake.buildDirectory": "${workspaceFolder}/build","C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}
  1. 创建.vscode/c_cpp_properties.json (可通过C/C++扩展生成并修改)

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/include","${workspaceFolder}/**"],"defines": [],"compilerPath": "/usr/bin/g++","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "linux-gcc-x64"},{"name": "Windows","includePath": ["${workspaceFolder}/include","${workspaceFolder}/**"],"defines": [],"compilerPath": "C:/mingw64/bin/g++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}

6. 构建项目

  1. 在VSCode中打开项目文件夹

  2. 按下Ctrl+Shift+P,输入"CMake: Configure"并选择你的编译器

  3. 按下Ctrl+Shift+P,输入"CMake: Build"构建项目

构建完成后,你会在build目录下找到生成的动态库文件:

  • Linux: libmylib.so

  • Windows: mylib.dll

  • macOS: libmylib.dylib

7. 运行测试程序

在终端中运行:

cd build
./test_mylib

附加说明

  1. 对于Windows平台,你可能需要修改CMakeLists.txt来正确处理动态库导出

  2. 如果你想使用Makefile而不是CMake,可以创建一个简单的Makefile:

CXX = g++
CXXFLAGS = -fPIC -I./include
LDFLAGS = -sharedTARGET = libmylib.so
SRC = src/mylib.cpp
OBJ = $(SRC:.cpp=.o)all: $(TARGET)$(TARGET): $(OBJ)$(CXX) $(LDFLAGS) -o $@ $^%.o: %.cpp$(CXX) $(CXXFLAGS) -c $< -o $@clean:rm -f $(OBJ) $(TARGET).PHONY: all clean

这样你就可以在VSCode中轻松创建、构建和测试动态库项目了。

相关文章:

  • vue3+element-plus,实现两个表格同步滚动
  • RabbitMQ RPC模式Python示例
  • 基于[coze][dify]搭建一个智能体工作流,抓取热门视频数据,自动存入在线表格
  • 【C++特殊工具与技术】固有的不可移植的特性(3)::extern“C“
  • 《C++初阶之类和对象》【友元 + 内部类 + 匿名对象】
  • 【.net core】【sqlsugar】在where条件查询时使用原生SQL
  • 清理华为云服务器内存使用率
  • 2025-6-27-C++ 学习 模拟与高精度(7)
  • unityButton问题
  • Gitee 持续集成与交付(CI/CD)篇
  • 【VPX3U】国产嵌入式平台:RK3588J×JH930硬件架构与红外应用方案
  • 推荐一个基于C#开发的跨平台构建自动化系统!
  • 【项目开发】删除表中所有含重复字段的数据
  • JetBrains AI助手登陆Android Studio!智能编码提升Kotlin开发效能
  • 无法访问 文件或目录损坏且无法读取
  • SPL 报表开发:不依赖逻辑数仓的轻量级多数据源报表
  • Linux命令行操作基础
  • 封装nuxt3的SSR请求和CSR请求方法
  • Linux基本指令篇 —— tac指令
  • GraphQL API-1