重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
(1)編寫(xiě)程序時(shí),你要包含(#include "什么.h") dll文件作者提供 的 頭文件(.h文件) 。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供米林企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、HTML5建站、小程序制作等業(yè)務(wù)。10年已為米林眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
程序里,便和普通函數(shù)調(diào)用一樣,去調(diào)用它的函數(shù)。
(2)程序編譯時(shí),你要鏈接 dll文件作者提供 的 (.lib文件) 庫(kù)文件。
當(dāng)然,你可以在源程序里把.lib 名字 寫(xiě)上,編譯時(shí)自動(dòng)去鏈接,例子:
#pragma comment (lib, "什么.lib")
(3)執(zhí)行時(shí),要有 .dll 文件. 放在當(dāng)前文件夾或系統(tǒng)文件夾里。
//dll
#include?windows.h
extern?"C"?//保持C語(yǔ)言文件
void?_declspec?(?dllexport?)?tryProc()???????//定義函數(shù)
{
MessageBox(NULL,_T("a"),_T("a"),MB_OK);
}
-------------------------------------
//C
#include?windows.h
int?main()
{
HMOUDLE?dll?=?LoadLibrary(/*DLL文件名*/);
if(dll?!=?NULL)
{
FARPROC?try?=?GetProcAddress(dll,"tryProc");
if(try?!=?NULL)
{
tryProc();//假如函數(shù)有返回值,可以用try()得到返回值
/*_asm?call?tryProc*/
}
}
return?0;
}
C語(yǔ)言沒(méi)辦法直接調(diào)用C++庫(kù)
要調(diào)用C++的庫(kù)
必須加一層封裝
即
先寫(xiě)一個(gè)C++文件,
對(duì)每個(gè)要調(diào)用的C++DLL中的函數(shù)func_name,
封裝成
extern
"C"
{
return_type
func_name_C(list)
{
return
func_name(list);
}
}
這樣的形式。
然后
把這個(gè)c++文件,
封裝成dll
C文件調(diào)用這個(gè)dll里面的函數(shù),
間接調(diào)用原始DLL