简单记录一下用CLion编译C++动态链接库时引入外部静态库遇到的问题,查了很久的cMakeList.txt文件用法,终于把外部的头文件和静态库.lib一起编译了进来...(刚接触CLion,MinGW用不惯,给换成了VS2022编译器环境)
创建动态链接库
选择C++库,指定位置后,库类型设置为shared(本次演示使用动态链接库而非静态库),点击创建工程
编写代码
示例代码:
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文件夹放到项目根目录
编辑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
构建工程
点击上方构建,选择第三个构建当前工程,待显示构建 已完成,即可在对应配置目录内找到构建成功的的动态数据库,本项目生成文件为test_1.dll,可用于给其他项目加载。