欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++動態(tài)庫調用的實現(xiàn)

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

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

一、生成dll

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

2.新建c++ dll 工程;

3.實現(xiàn).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
// 版本說明:類初始版本實現(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:
    // 字符串轉大寫
    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
// 版本說明:類初始版本實現(xiàn)
//-----------------------------------------------------------------------------
 
#include <string>
#include <algorithm>
#include "../../include/CStringUtils.h"
using namespace std;
 
//-----------------------------------------------------------------------------
// 功能: 字符串轉大寫
// 參數(shù):
// strContent: 待轉的字符串
// 返回值: 返回轉換后字符串的引用對象
// 創(chuàng)建者: Zhang Lei
// 日期:2022.06.28
//-----------------------------------------------------------------------------
string& CStringUtils::ToUpper(string& strContent)
{
    transform(strContent.begin(), strContent.end(), strContent.begin(), ::toupper);
    return strContent;
}
 
//-----------------------------------------------------------------------------
// 功能: 字符串轉小寫
// 參數(shù):
// strContent: 待轉的字符串
// 返回值: 返回轉換后字符串的引用對象
// 創(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 比較的字符串
// 返回值: 比較結果
// 創(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,編譯報錯;

 去掉預編譯頭

成功

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++動態(tài)庫調用的實現(xiàn)的文章就介紹到這了,更多相關c++動態(tài)庫調用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺析C語言調試器GDB和LLDB的使用方法

    淺析C語言調試器GDB和LLDB的使用方法

    這篇文章主要介紹了C語言調試器GDB和LLDB的使用方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 一文學會數(shù)據(jù)結構-堆

    一文學會數(shù)據(jù)結構-堆

    本文主要介紹了數(shù)據(jù)結構-堆,文中通過圖片和大量的代碼講解的非常詳細,需要學習的朋友可以參考下這篇文章,希望可以幫助到你
    2021-08-08
  • C語言計算代碼執(zhí)行所耗CPU時鐘周期

    C語言計算代碼執(zhí)行所耗CPU時鐘周期

    本文給大家介紹的是使用C語言來計算代碼執(zhí)行所耗CPU時鐘周期的代碼,非常的簡單實用,不過要依托于sync,有需要的小伙伴自己參考下吧。
    2015-03-03
  • C語言中結構體實例解析

    C語言中結構體實例解析

    大家好,本篇文章主要講的是C語言中結構體實例解析,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • C語言實現(xiàn)單詞小助手功能完善版

    C語言實現(xiàn)單詞小助手功能完善版

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)單詞小助手功能的完善版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言算法學習之雙向鏈表詳解

    C語言算法學習之雙向鏈表詳解

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數(shù)據(jù)結點中都有兩個指針,分別指向直接后繼和直接前驅。本文主要介紹了C語言算法中雙向鏈表的實現(xiàn),需要的可以參考一下
    2022-05-05
  • 函數(shù)式宏定義與普通函數(shù)的區(qū)別

    函數(shù)式宏定義與普通函數(shù)的區(qū)別

    盡管函數(shù)式宏定義和普通函數(shù)相比有很多缺點,但只要小心使用還是會顯著提高代碼的執(zhí)行效率,畢竟省去了分配和釋放棧幀、傳參、傳返回值等一系列工作,因此那些簡短并且被頻繁調用的函數(shù)經(jīng)常用函數(shù)式宏定義來代替實現(xiàn)
    2013-10-10
  • C語言十進制轉二進制代碼實例

    C語言十進制轉二進制代碼實例

    這篇文章主要介紹了C語言十進制轉二進制代碼實例,并且轉換后會統(tǒng)計二進制1的個數(shù),實例簡單明了,需要的朋友可以參考下
    2014-06-06
  • C語言實現(xiàn)簡單航班管理系統(tǒng)

    C語言實現(xiàn)簡單航班管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單航班管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++利用VLC庫制作音視頻的示例代碼

    C++利用VLC庫制作音視頻的示例代碼

    這篇文章主要為大家詳細介紹了C++如何利用VLC庫制作音視頻,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2024-01-01

最新評論