CLion中C++加载静态库和动态库

记录学习内容

编译环境:

IDE:CLion 2022.2

ToolChains:MinGW64

一、加载静态库 

1、生成静态库

用 求平方 举例:

先编写静态库文件Math.cpp 输出num的平方

#include <iostream>
#include <cstdlib>
using namespace std;

void customLibTest(const char * num) {
    double x = strtod(num, nullptr);
    double res = x * x;
    cout << "输入x: " << x << "的平方是" << res << endl;
}

在项目CMakeList.txt中用

add_library(Math STATIC math.cpp)

build生成静态库 工程目录下会有Math.lib创建出来

2、调用静态库

在调用静态库的项目目录下创建libs文件夹用来存放上一步生成的静态库文件Math.lib

在CmakeList.txt中进行如下配置:

cmake_minimum_required(VERSION 3.23)
project(Test1)

set(CMAKE_CXX_STANDARD 11)

link_directories(libs) #链接文件夹 指定引用的外部库文件夹路径 用在add_executable或add_library之前

add_executable(Test main.cpp main.h)

target_link_libraries(Test Math.lib) #链接目标库文件 指定引用的外部库文件 用在add_executable或add_library之后

 在main.cpp中如下图所示代码 进行调用:

#include <iostream>
//加载静态库
#pragma comment(lib, "Math.lib")
//声明静态库中的方法
void customLibTest(const char * num);

int main() {
    customLibTest("2");
    return 0;
}

结果:

二、加载动态库

1、生成动态库

这里生成动态库的环境是Windows,所以生成的应该是dll文件,如果是Linux生成的应该是so文件。但是调用方式都是一样的。

在CLion中新建动态库工程:

 还是以求平方为例 编写.cpp和.h如下:

library.h

#ifndef MATH_LIBRARY_H
#define MATH_LIBRARY_H

void customLibTest(const char * num);

#endif //MATH_LIBRARY_H

ps:如果有java jna与动态库dll交互的需求 需要在上面头文件的方法前加上 extern "C" (同时要注意的是java版本位数要与编译dll的环境一致,即32位就都是32位,64位就都是64位)

library.cpp

#include "library.h"

#include <iostream>
using namespace std;

void customLibTest(const char * num) {
    double x = strtod(num, nullptr);
    double res = x * x;
    cout << "输入x: " << x << "的平方是" << res << endl;
}

CMakeList.txt

cmake_minimum_required(VERSION 3.23)
project(Math)

set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/output) #修改所生成库的目标文件夹
set(CMAKE_CXX_STANDARD 11)

add_library(Math SHARED library.cpp)

build一下,会在工程目录下创建output文件夹,文件夹下就是生成出来的dll库文件。

2、调用动态库

先将上一步生成出来的文件都复制到引用动态库的Test1工程目录的libs下:

调用动态库的工程CMakeList.txt代码配置如下:

cmake_minimum_required(VERSION 3.23)
project(Test1)

set(CMAKE_CXX_STANDARD 11)

link_directories(libs) #链接文件夹 用在add_executable或add_library之前

add_executable(Test main.cpp main.h)

target_link_libraries(Test cygMath.dll libMath.dll.a) #链接目标库文件 用在add_executable或add_library之后

 C++代码main.cpp中调用的时候可以直接写:

#include <iostream>

//声明动态库的方法
void customLibTest(const char * num);

int main() {
    customLibTest("8");
    return 0;
}

运行结果:

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
c 环境配置 colin 主要包括三个步骤:安装编译器、配置环境变量和测试编译器。 首先,安装编译器。在安装 c 环境之前,我们需要先下载对应的编译器软件。常用的 c 编译器有 gcc、clang、MSVC 等。根据个人需求选择适合自己的编译器,并下载对应的安装包。然后,按照安装向导进行安装即可。安装完成后,我们就拥有了一个可用的 c 编译器。 接下来,配置环境变量。环境变量的配置可以使得我们在任意目录下都能够直接使用 c 编译器。首先,找到我们安装的编译器安装目录。然后,将该目录添加到系统的环境变量。具体的配置步骤可以根据操作系统的不同而有所差异,但一般都是在控制面板或者系统设置找到“环境变量”选项,然后添加编译器安装目录到系统的“PATH”变量。配置完成后,我们就可以在任意目录下打开命令行终端,输入编译器命令来编译和运行 c 程序。 最后,测试编译器。经过以上两个步骤的配置,我们就可以测试我们的 c 编译器是否正常工作了。在任意目录下新建一个文本文件,将其后缀改为“.c”,比如“test.c”。然后,用任意文本编辑器打开该文件,输入一段简单的 c 代码,比如“#include <stdio.h> int main(){ printf("Hello, world!"); return 0; }”。保存文件后,回到命令行终端,进入该文件所在的目录,输入编译命令,如“gcc test.c -o test”,然后按回车键进行编译。如果没有出现错误信息,说明我们的 c 编译器已经成功配置。 综上所述,通过安装编译器、配置环境变量和测试编译器三个步骤,我们可以完成 c 环境的配置,从而能够顺利编译和运行 c 程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值