使用Vs Studio和Cmake生成C++库

本文介绍了如何在Windows环境下,利用VSStudio和CMake工具从源码编译一个C++库,生成.dll和.lib文件,并在另一个项目中进行链接和调用。步骤包括编写库代码,创建CMakeLists.txt文件,配置编译和安装路径,以及在测试项目中链接库并运行。
摘要由CSDN通过智能技术生成

使用Vs Studio和Cmake生成C++库

在windows系统下,由于没有C++的编译器,想通过源码安装、加载C++的库存在不方便的地方。本文将介绍通过使用Vs Studio运用Cmake的方式,编译一个简单的自定义库,并进行加载、调用。
工程源代码

前提条件

  1. windows
  2. Vs Studio
  3. Cmake(Vs Studio默认环境)

编写并生成自定义库

add.h文件

#include <iostream>

#ifdef SIMPLEDLL_EXPORT
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif

class DLL_EXPORT Add {
public:
	Add();
	~Add();

	double summation(double a, double b);

private:
};

add.cpp文件

#include "add.h"

Add::Add() {}

Add::~Add() {}

double Add::summation(double a, double b) {
    return a + b;
}

CMakeLists.txt文件

# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
#
cmake_minimum_required (VERSION 3.8)

project ("generate_lib")

include_directories(
	include 
	${catkin_INCLUDE_DIRS}
)

add_library(add SHARED
	src/add.cpp
)
set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/install)
install(TARGETS add LIBRARY DESTINATION install)
install(FILES ${PROJECT_SOURCE_DIR}/include/add.h  DESTINATION include)

依次点击Vs Studio中“全部重新生成”、“安装generate_lib”,在“install”目录下打包生成必要的.h、.dll、.lib文件


测试调用自定义库

  1. use_lib.h文件
// use_lib.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。

#pragma once

#include "add.h"

#include <iostream>
#include <Windows.h>

// TODO: 在此处引用程序需要的其他标头。
  1. use_lib.cpp文件
// use_lib.cpp: 定义应用程序的入口点。
//

#include "use_lib.h"

using namespace std;

int main(int argc, char** argv) {
	Add add;
	double a = 6.6;
	double b = 3.4;
	std::cout << "a + b = " << add.summation(a, b) << std::endl;

	while (true) {
		//ros::Duration(1).sleep();
		Sleep(1000);
		std::cout << "RRRR" << std::endl;
	}

	return 0;
}
  1. CMakeLists.txt文件
# CMakeList.txt: use_lib 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

project ("use_lib")

include_directories(
	include 
	${catkin_INCLUDE_DIRS}
	third_libs/generate_lib/include
)

link_directories(
	third_libs/generate_lib/lib
)

# 将源代码添加到此项目的可执行文件。
add_executable (use_lib use_lib.cpp)
target_link_libraries(use_lib 
    ${catkin_LIBRARIES} 
    add
)

if (CMAKE_VERSION VERSION_GREATER 3.12)
    set_property(TARGET use_lib PROPERTY CXX_STANDARD 20)
endif()

# TODO: 如有需要,请添加测试并安装目标。
  1. 将generate_lib文件夹复制到“use_lib/third_libs/”文件夹路径下。
  2. 将“generate_lib/install/bin/add.dll”文件复制到"use_lib\out\build\x64-debug"文件夹路径下。
  3. 点击VsStudio中的“全部重新生成”即可得到可执行文件。

7. 双击"use_lib\out\build\x64-debug\use_lib.exe"文件运行程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值