最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++動(dòng)態(tài)庫調(diào)用的實(shí)現(xiàn)

 更新時(shí)間:2022年07月01日 11:05:26   作者:朦朧的心一樣不平凡  
本文主要介紹了c++動(dòng)態(tài)庫調(diào)用的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在平時(shí)的開發(fā)中某些情況,動(dòng)態(tài)庫和靜態(tài)庫是程序開發(fā)的不二法門,例如封裝一個(gè)庫,供別人調(diào)用(日志庫、字符串處理庫、設(shè)備信息采集庫等),比如接入第三方系統(tǒng)或者平臺(tái),等等是非常重要的,筆者最早接觸的MFC時(shí)就有dll(VC++深入詳解)及雞啄米的MFC環(huán)節(jié),后面隨著QT的盛行(國產(chǎn)化的推進(jìn)),QT開始廣泛應(yīng)用,里面也有動(dòng)態(tài)庫,就筆者最近的項(xiàng)目為例,這里記錄下從庫的生成到最后的調(diào)用;

一、生成dll

1.安裝vs開發(fā)工具(2017);

2.新建c++ dll 工程;

3.實(shí)現(xiàn).h和.cpp,將新建默認(rèn)的.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 字符串工具類聲明
// 當(dāng)前版本: 1.0
// 作者: Zhang Lei
// 日期:2022.06.28
// 版本說明:類初始版本實(shí)現(xiàn)
//-----------------------------------------------------------------------------
 
#ifndef __BASE_CSTRINGUTILS_H__
#define __BASE_CSTRINGUTILS_H__
 
#include "OSCommonDefine.h"
#include <string>
#include <vector>
using namespace std;
 
// CStringUtils類定義
class AT_DLLEXPORT CStringUtils
{
public:
    // 字符串轉(zhuǎn)大寫
    static string& ToUpper(string& strContent);
    // 字符串轉(zhuǎn)小寫
    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 字符串工具類聲明
// 當(dāng)前版本: 1.0
// 作者: Zhang Lei
// 日期:2022.06.28
// 版本說明:類初始版本實(shí)現(xiàn)
//-----------------------------------------------------------------------------
 
#include <string>
#include <algorithm>
#include "../../include/CStringUtils.h"
using namespace std;
 
//-----------------------------------------------------------------------------
// 功能: 字符串轉(zhuǎn)大寫
// 參數(shù):
// strContent: 待轉(zhuǎn)的字符串
// 返回值: 返回轉(zhuǎn)換后字符串的引用對(duì)象
// 創(chuàng)建者: Zhang Lei
// 日期:2022.06.28
//-----------------------------------------------------------------------------
string& CStringUtils::ToUpper(string& strContent)
{
    transform(strContent.begin(), strContent.end(), strContent.begin(), ::toupper);
    return strContent;
}
 
//-----------------------------------------------------------------------------
// 功能: 字符串轉(zhuǎn)小寫
// 參數(shù):
// strContent: 待轉(zhuǎn)的字符串
// 返回值: 返回轉(zhuǎn)換后字符串的引用對(duì)象
// 創(chuàng)建者: Zhang Lei
// 日期:2022.06.28
//-----------------------------------------------------------------------------
string& CStringUtils::ToLower(string& strContent)
{
    transform(strContent.begin(), strContent.end(), strContent.begin(), ::tolower);
    return strContent;
}
 
//-----------------------------------------------------------------------------
// 功能: 字符串忽略大小寫比較
// 參數(shù): strContent 字符串 strContentCmp 比較的字符串
// 返回值: 比較結(jié)果
// 創(chuàng)建者: 2022.06.28
// 創(chuàng)建日期: 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,編譯報(bào)錯(cuò);

 去掉預(yù)編譯頭

成功

5.說明:

一般要將.h和.cpp分開,畢竟.h是對(duì)外調(diào)用的,要和管理;

二、調(diào)用dll

1.新建測試程序,這里新建一個(gè)控制臺(tái)應(yīng)用程序;

2.調(diào)用:

#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;
}

在工程中設(shè)置調(diào)用庫名和路徑: 

 4.成功輸出:

 到此這篇關(guān)于c++動(dòng)態(tài)庫調(diào)用的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)c++動(dòng)態(tài)庫調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能

    C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能

    這篇文章主要介紹了C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能,實(shí)現(xiàn)一個(gè)類似于樹形菜單欄的功能,當(dāng)用戶點(diǎn)擊菜單欄中的選項(xiàng)時(shí)則會(huì)跳轉(zhuǎn)到不同的頁面上,本文簡單給大家分享實(shí)現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • C/C++ Qt TreeWidget 嵌套節(jié)點(diǎn)操作使用

    C/C++ Qt TreeWidget 嵌套節(jié)點(diǎn)操作使用

    本文主要介紹了TreeWidget的如何使用,實(shí)現(xiàn)對(duì)樹形框多節(jié)點(diǎn)的各種操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++實(shí)現(xiàn)通訊錄管理系統(tǒng)

    C++實(shí)現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語言結(jié)構(gòu)體嵌套與對(duì)齊超詳細(xì)講解

    C語言結(jié)構(gòu)體嵌套與對(duì)齊超詳細(xì)講解

    這篇文章主要介紹了C語言結(jié)構(gòu)體嵌套與對(duì)齊,C語言中結(jié)構(gòu)體是一種構(gòu)造類型,和數(shù)組、基本數(shù)據(jù)類型一樣,可以定義指向該種類型的指針。結(jié)構(gòu)體指針的定義類似其他基本數(shù)據(jù)類型的定義
    2022-12-12
  • C++空類及沒有成員變量的類的大小實(shí)例分析

    C++空類及沒有成員變量的類的大小實(shí)例分析

    這篇文章主要介紹了C++空類及沒有成員變量的類的大小,對(duì)于初學(xué)者更好的了解C++的指針及類的存儲(chǔ)結(jié)構(gòu)很有幫助,需要的朋友可以參考下
    2014-07-07
  • C語言中sizeof()與strlen()函數(shù)的使用入門及對(duì)比

    C語言中sizeof()與strlen()函數(shù)的使用入門及對(duì)比

    這篇文章主要介紹了C語言中sizeof()與strlen()函數(shù)的使用入門及對(duì)比,同時(shí)二者在C++中的使用情況也基本上同理,是需要的朋友可以參考下
    2015-12-12
  • C/C++編程判斷String字符串是否包含某個(gè)字符串實(shí)現(xiàn)示例

    C/C++編程判斷String字符串是否包含某個(gè)字符串實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了C++編程中判斷String字符串是否包含某個(gè)字符串的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 12個(gè)C語言必背實(shí)例分享

    12個(gè)C語言必背實(shí)例分享

    這篇文章主要和大家介紹12個(gè)C語言中必背的實(shí)例,文中的示例代碼講解詳細(xì),對(duì)我們了解和掌握C語言有一定的幫助,感興趣的小伙伴快跟隨小編一起了解一下
    2022-11-11
  • C語言中數(shù)組的一些基本知識(shí)小結(jié)

    C語言中數(shù)組的一些基本知識(shí)小結(jié)

    這篇文章主要介紹了C語言中數(shù)組的一些基本知識(shí)小結(jié),其中重點(diǎn)是對(duì)于數(shù)組的內(nèi)存分配相關(guān)方面的知識(shí)整理,需要的朋友可以參考下
    2016-04-04
  • C++調(diào)用C#的DLL實(shí)現(xiàn)方法

    C++調(diào)用C#的DLL實(shí)現(xiàn)方法

    這篇文章主要介紹了C++調(diào)用C#的DLL實(shí)現(xiàn)方法,很有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

贡觉县| 滕州市| 拉萨市| 平安县| 靖边县| 陇川县| 北碚区| 通化县| 铜鼓县| 贵南县| 大化| 丹江口市| 麻江县| 岳池县| 新乐市| 渑池县| 杭锦后旗| 宁陕县| 乌鲁木齐市| 同江市| 大庆市| 缙云县| 剑阁县| 庆城县| 沽源县| 浦江县| 阿尔山市| 启东市| 阿鲁科尔沁旗| 融水| 灵台县| 天台县| 鄂伦春自治旗| 巴彦淖尔市| 将乐县| 桑植县| 梧州市| 佳木斯市| 老河口市| 威海市| 浦县|