C++封裝成DLL并調(diào)用的實現(xiàn)
使用vs2019將C++封裝成DLL并調(diào)用主要有以下幾個步驟:
1)新建工程,編寫要封裝的.cpp和.h文件;
2) 生成動態(tài)鏈接庫.dll和靜態(tài)鏈接庫.lib;
3) 調(diào)用通過.h文件調(diào)用;
第一步:編寫.cpp和.h文件
本例工程名稱為RunLIB
.cpp如下:
#include "pch.h" #include<iostream> class FHello :public IInterface { public: FHello(); virtual void Init(); virtual void Destroy(); virtual char* GetName(); private: char name[1024]; }; FHello::FHello() { memset(name, 0, 1024); strcpy(name, "hello"); } void FHello::Init() { printf("FHello::Init\n"); } void FHello::Destroy() { printf("FHello::Destroy\n"); } char* FHello::GetName() { return name; } IInterface* IInterface::CreateInterface() { return new FHello(); }
.h如下:
#ifndef PCH_H #define PCH_H #define _CRT_SECURE_NO_WARNINGS #define FENGZHUANGCPP_API __declspec(dllexport) //導(dǎo)出 //動態(tài)鏈接庫 class FENGZHUANGCPP_API IInterface { public: static IInterface* CreateInterface(); virtual void Init() = 0; virtual void Destroy() = 0; virtual char *GetName() = 0; }; #endif //PCH_H
第二步:生成動態(tài)鏈接庫.dll和靜態(tài)鏈接庫.lib
①右鍵解決方案資源管理器的工程名稱>>屬性>>屬性配置>>常規(guī)>>配置類型,將配置類型選為動態(tài)庫(.dll),點擊確定
②右鍵解決方案資源管理器的工程名稱,選擇生成
③右鍵解決方案資源管理器的工程名稱>>屬性>>屬性配置>>常規(guī)>>配置類型,將配置類型選為靜態(tài)庫(.lib),點擊確定
④右鍵解決方案資源管理器的工程名稱,選擇生成
此時,會在工程路徑下的x64\Debug文件夾中看到你所生成的.dll和.lib文件(比如我的在:E:\C++\RunLIB\x64\Debug路徑中)
到這里,我們已經(jīng)完成了封裝的過程,那么我們應(yīng)該如何調(diào)用我們的接口呢?
第三步:調(diào)用通過.h文件調(diào)用;
①將生成的.dll和.lib,以及pch.cpp放在一個名為dllib的文件夾中(為了后面調(diào)用)
②使用vs新建一個名為diaoyong的工程(同時會自動生成一個diaoyong.cpp),將①的文件夾復(fù)制到工程目錄下
③在diaoyong.cpp輸入調(diào)用的代碼
#include "dlllib/pch.h" #include <iostream> using namespace std; #pragma comment(lib,"dLLL.lib") //動態(tài)庫在運行時,會把代碼鏈接到目標(biāo) //靜態(tài)庫在編譯期,會把代碼鏈接到目標(biāo) int main() { IInterface* IF = IInterface::CreateInterface(); cout << IF->GetName() << endl; IF->Init(); IF->Destroy(); return 0; }
此時,運行會出現(xiàn)如下報錯,是因為我們沒有把包含.lib的文件夾路徑加載進(jìn)來,我們需要執(zhí)行的操作:
1)右鍵解決方案資源管理器的工程名稱>>屬性>>配置屬性>>C/C++>>附加包含目錄>>編輯>>.lib文件的路徑放進(jìn)去
2)右鍵解決方案資源管理器的工程名稱>>屬性>>項目屬性>>配置屬性>>鏈接器>>附加庫目錄>>編輯>>.lib文件的路徑放進(jìn)去
加載完成后,在運行我們編寫的diaoyong.cpp,就成功啦!?。?!
到此這篇關(guān)于C++封裝成DLL并調(diào)用的實現(xiàn)的文章就介紹到這了,更多相關(guān)C++封裝成DLL并調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
探索Visual C++下創(chuàng)建WPF項目的方法示例
這篇文章主要介紹了探索Visual C++下創(chuàng)建WPF項目的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07數(shù)據(jù)結(jié)構(gòu)之矩陣行列和相等的實例
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之矩陣行列和相等的實例的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10