C++中declspec(dllexport)和declspec(dllimport)?的用法介紹
一、創(chuàng)建動態(tài)文件
1.添加頭文件dll.h,并輸入以下代碼:
#ifdef DLL_EXPORTS //如果在工程里已經(jīng)添加預(yù)定義宏DLL_EXPORTS #define DLLEXPORT __declspec(dllexport) //那DLLEXPORT就指代__declspec(dllexport) 用于dll的導(dǎo)出 #else //當(dāng)工程中不包含DLL_EXPORTS預(yù)定義時 #define DLLEXPORT __declspec(dllimport) //DLLEXPORT 就指代__declspec(dllimport) #endif DLLEXPORT int add(int a, int b);//導(dǎo)出函數(shù)用 DLLEXPORT void foo();//導(dǎo)出函數(shù)用 class DLLEXPORT __declspec(dllexport) a {};//導(dǎo)出類用
2.在項目的屬性中的預(yù)處理其中定義DLL_EXPORTS,其他項目則不要定義。
3.在dll.cpp文件中實現(xiàn)方法:
#include "dll.h" int add(int x,int y) { return x+y; }
4.編譯生成,則工程的debug目錄下就生成了.dll和.lib文件
二、創(chuàng)建調(diào)用動態(tài)文件
1.新工程中,創(chuàng)建添加源文件calldll.cpp,并輸入以下代碼:
#include "dll.h" #include <iostream> int main() { int z; int x=1, y=2; z=add(x,y); std::cout<<z<<std::endl; }
2.工程屬性進行以下設(shè)置:
(1)C/C++:“附加包含目錄”,添加dll.h頭文件目錄;
(2)鏈接器--常規(guī): “附加庫目錄”,添加上面生成的dll.lib文件的目錄;
(3)鏈接器--輸入:“附加依賴項”,添加上面生成的dll.lib文件。
(4)代碼中開始位置手動引用靜態(tài)庫: #pragma comment(lib,"..\Testlib\Test.lib")
注:#pragma comment(lib,"..\upgradeLib\RKUpgrade.lib")
3.按照如上操作,即可成功生成并運行。即完成dll動態(tài)庫的調(diào)用。
注:
如果編譯通過后用行,提示丟失dll.dll文件的錯誤信息。
解決:將dll.dll放在和exe同一目錄下或放在c:\windows\system32目錄下(Win64位操作系統(tǒng)且dll.dll不是64位而是32位的話放在c:\windows\syswow64目錄下)
到此這篇關(guān)于C++中declspec(dllexport)和declspec(dllimport) 用法的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解應(yīng)用程序與驅(qū)動程序通信DeviceIoControl
這種通信方式,就是驅(qū)動程序和應(yīng)用程序自定義一種IO控制碼,然后調(diào)用DeviceIoControl函數(shù),IO管理器會產(chǎn)生一個MajorFunction為IRP_MJ_DEVICE_CONTROL,MinorFunction為自己定義的控制碼的IRP,系統(tǒng)就調(diào)用相應(yīng)的處理IRP_MJ_DEVICE_CONTROL的派遣函數(shù)2021-06-06C++算法學(xué)習(xí)之分支限界法的應(yīng)用
分支限界法常以廣度優(yōu)先或以最小耗費(最大效益)優(yōu)先的方式搜索問題的解空間樹。本文將詳細講解分支限界法的應(yīng)用,需要的可以參考一下2022-05-05C/C++獲取當(dāng)前時間的方法總結(jié)(最全)
這篇文章主要為大家整理了C/C++中獲取當(dāng)前時間的最全方法,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)和借鑒價值,需要的可以了解一下2023-03-03