iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c++动态库调用的实现
  • 816
分享到

c++动态库调用的实现

2024-04-02 19:04:59 816人浏览 安东尼
摘要

目录一、生成dll二、调用dll在平时的开发中某些情况,动态库和静态库是程序开发的不二法门,例如封装一个库,供别人调用(日志库、字符串处理库、设备信息采集库等),比如接入第三方系统或

在平时的开发中某些情况,动态库和静态库是程序开发的不二法门,例如封装一个库,供别人调用(日志库、字符串处理库、设备信息采集库等),比如接入第三方系统或者平台,等等是非常重要的,笔者最早接触的MFC时就有dll(Vc++深入详解)及鸡啄米的MFC环节,后面随着Qt的盛行(国产化的推进),QT开始广泛应用,里面也有动态库,就笔者最近的项目为例,这里记录下从库的生成到最后的调用;

一、生成dll

1.安装vs开发工具(2017);

2.新建c++ dll 工程;

3.实现.h和.cpp,将新建默认的.h和.cpp移除;

OSCommonDefine.h

#ifndef __BASE_OSCOMMONDEFINE_H__
#define __BASE_OSCOMMONDEFINE_H__
 
#define AT_DLLEXPORT __declspec(dllexport)
 
#endif // __BASE_OSCOMMONDEFINE_H__

CStringUtils.h

//-----------------------------------------------------------------------------
// Copyright (c) 2022, xxx
// All rights reserved.
//
// 摘要: CStringUtils.h 字符串工具类声明
// 当前版本: 1.0
// 作者: Zhang Lei
// 日期:2022.06.28
// 版本说明:类初始版本实现
//-----------------------------------------------------------------------------
 
#ifndef __BASE_CSTRINGUTILS_H__
#define __BASE_CSTRINGUTILS_H__
 
#include "OSCommonDefine.h"
#include <string>
#include <vector>
using namespace std;
 
// CStringUtils类定义
class AT_DLLEXPORT CStringUtils
{
public:
    // 字符串转大写
    static string& ToUpper(string& strContent);
    // 字符串转小写
    static string& ToLower(string& strContent);
    // 字符串忽略大小写比较
    static int CompareNoCase(const string& strContent, const string& strContentCmp);
};
 
#endif // __BASE_CSTRINGUTILS_H__

 CStringUtils.cpp

//-----------------------------------------------------------------------------
// Copyright (c) 2022, xxx
// All rights reserved.
//
// 摘要: CStringUtils.h 字符串工具类声明
// 当前版本: 1.0
// 作者: Zhang Lei
// 日期:2022.06.28
// 版本说明:类初始版本实现
//-----------------------------------------------------------------------------
 
#include <string>
#include <alGorithm>
#include "../../include/CStringUtils.h"
using namespace std;
 
//-----------------------------------------------------------------------------
// 功能: 字符串转大写
// 参数:
// strContent: 待转的字符串
// 返回值: 返回转换后字符串的引用对象
// 创建者: Zhang Lei
// 日期:2022.06.28
//-----------------------------------------------------------------------------
string& CStringUtils::ToUpper(string& strContent)
{
    transfORM(strContent.begin(), strContent.end(), strContent.begin(), ::toupper);
    return strContent;
}
 
//-----------------------------------------------------------------------------
// 功能: 字符串转小写
// 参数:
// strContent: 待转的字符串
// 返回值: 返回转换后字符串的引用对象
// 创建者: Zhang Lei
// 日期:2022.06.28
//-----------------------------------------------------------------------------
string& CStringUtils::ToLower(string& strContent)
{
    transform(strContent.begin(), strContent.end(), strContent.begin(), ::tolower);
    return strContent;
}
 
//-----------------------------------------------------------------------------
// 功能: 字符串忽略大小写比较
// 参数: strContent 字符串 strContentCmp 比较的字符串
// 返回值: 比较结果
// 创建者: 2022.06.28
// 创建日期: 2022.06.28
//-----------------------------------------------------------------------------
int CStringUtils::CompareNoCase(const string& strContent, const string& strContentCmp)
{
#if defined(_WIN32)
    return _stricmp(strContent.c_str(), strContentCmp.c_str());
#elif defined(__linux__)
    return strcasecmp(strContent.c_str(), strContentCmp.c_str());
#endif
}

4.生成dll,编译报错;

 去掉预编译头

成功

5.说明:

一般要将.h和.cpp分开,毕竟.h是对外调用的,要和管理;

二、调用dll

1.新建测试程序,这里新建一个控制台应用程序;

2.调用:

#include <iOStream>
#include "../../include/CStringUtils.h"
 
int main()
{
	std::string str = "I love China";
 
	std::cout << "Hello World!\n";
	std::cout << CStringUtils::ToUpper(str) << std::endl;
	std::cout << CStringUtils::ToLower(str) << std::endl;
}

在工程中设置调用库名和路径: 

 4.成功输出:

 到此这篇关于c++动态库调用的实现的文章就介绍到这了,更多相关c++动态库调用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: c++动态库调用的实现

本文链接: https://www.lsjlt.com/news/153188.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么计算字符串长度
    在C语言中,可以使用内置的strlen()函数来计算字符串的长度。该函数位于string.h头文件中。以下是一个示例代码: #inc...
    99+
    2024-05-14
    c语言
  • c语言怎么判断三个数的大小
    可以通过比较三个数之间的大小关系来判断它们的大小。以下是一个示例代码: #include <stdio.h> int ...
    99+
    2024-05-14
    c语言
  • c++排序函数sort怎么使用
    在C++中,使用sort函数对容器中的元素进行排序,可以按照默认的升序排列,也可以自定义排序规则。 下面是一个简单的例子,对一个ve...
    99+
    2024-05-14
    c++
  • c++中string的compare函数怎么使用
    在C++中,可以使用string的compare函数来比较两个string对象的大小。该函数的原型如下: int compare(c...
    99+
    2024-05-14
    c++
  • c++中string的compare函数有什么用
    c++中string的compare函数用于比较两个字符串的大小关系。该函数返回一个整数值,表示两个字符串的比较结果。 具体来说,如...
    99+
    2024-05-14
    c++
  • c++中print函数的功能有哪些
    在C++中,通常使用std::cout来进行输出操作,而不是使用print函数。std::cout是C++标准库中的一个输出流对象,...
    99+
    2024-05-14
    c++
  • c语言数据结构怎么使用
    在C语言中,数据结构可以通过定义结构体来实现。以下是一些常见的数据结构的使用方法示例: 链表: #include <std...
    99+
    2024-05-14
    c语言
  • c++中print函数的用法是什么
    在C++中没有内置的print函数,但可以使用cout来输出内容到控制台。cout是C++标准库中的一个输出流对象,可以使用<...
    99+
    2024-05-14
    c++
  • c++中concept的用法是什么
    在C++20中,Concept是一种新的语言特性,用于定义类型要求和约束。Concept可以被用来约束函数模板、类模板和普通函数的参...
    99+
    2024-05-14
    c++
  • c++中concept的作用是什么
    在C++中,concept的作用是定义一种通用的约束,用于限制模板参数的类型范围。通过使用concept,可以在编译时对模板参数进行...
    99+
    2024-05-14
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作