CLion编译C++动态链接库时引入外部静态库

教程经验 · 2022-07-28 · 37 人浏览

简单记录一下用CLion编译C++动态链接库时引入外部静态库遇到的问题,查了很久的cMakeList.txt文件用法,终于把外部的头文件和静态库.lib一起编译了进来...(刚接触CLion,MinGW用不惯,给换成了VS2022编译器环境)

创建动态链接库

选择C++库,指定位置后,库类型设置为shared(本次演示使用动态链接库而非静态库),点击创建工程

a1.png

编写代码

示例代码:
library.cpp

#include <iostream>
#include "plugin.h"
#include <unordered_map>

cspLogger logger("eoe");

void func(std::unordered_map<std::string, std::string> data){
    std::cout<<"data-size:"<<data.size()<<std::endl;
}
void PluginInit(){
    std::cout<<"test_plugin loaded!"<<std::endl;
    logger.info("test_plugin loaded!");
    SetListener(EventCode::onServerStart,func);
}

代码部分为某项目半成品,无参考价值,仅示例

引用外部依赖并编译

文件导入

手动将目标SDK文件夹中的head、lib文件夹放到项目根目录

a2.png

编辑CMakeLists.txt

主要修改:5-7行

cmake_minimum_required(VERSION 3.22)
project(test_1)
set(CMAKE_CXX_STANDARD 14)

include_directories("Head")#引入外部头文件路径
link_directories("Lib")#引入外部依赖库路径
link_libraries(a)#引入依赖文件名
add_library(test_1 SHARED library.cpp)

重新加载CMake

a3.png

构建工程

点击上方构建,选择第三个构建当前工程,待显示构建 已完成,即可在对应配置目录内找到构建成功的的动态数据库,本项目生成文件为test_1.dll,可用于给其他项目加载。

a4.png

编程 clion c++
Theme Jasmine by Kent Liao
皖公网安备34122202000364号