dll入門簡單例項(動態鏈結庫)

2021-06-29 15:59:06 字數 1976 閱讀 2920

方式一:非空專案

1、建立win32專案, 選擇dll應用程式

2、新建dllexport.h

// dllexport.h

#ifdef win32

#ifdef dll_test_export

#define dll_test_api __declspec(dllexport)

#else

#define dll_test_api __declspec(dllimport)

#endif

#endif

3、新建ncdlltest.h

// ncdlltest.h

// #設定預處理器

// add_definitions("-dll_sample_export")

#define dll_test_export

#include "dllexport.h"

extern "c" dll_test_api void testdll(int);

4、新建ncdlltest.cpp

// ncdlltest.cpp

#include "stdafx.h"

#include "ncdlltest.h"

#include

void testdll(int arg)

5、f7編譯即可生成mydll3.dll

方式二:空專案

1、建立win32專案, 選擇dll應用程式,附加選項為空專案

2、新建ncdll******.h

#ifndef __nc_dll_sample_h__

#define __nc_dll_sample_h__

#ifdef win32

#ifdef dll_sample_export

#define dll_sample_api __declspec(dllexport)

#else

#define dll_sample_api __declspec(dllimport)

#endif

#endif

extern "c" dll_sample_api void testdll(int);

#endif

3、新建ncdll******.cpp

#pragma once

#include

#include

// #設定預處理器

// add_definitions("-dll_sample_export")

#define dll_sample_export

#include "ncdllsample.h"

// dllmain可寫可不寫, 不寫系統會呼叫預設的

// bool apientry dllmain(handle hmodule

//                       , dword ul_reason_for_call

//                       , lpvoid lpreserved)

// //     return true;

// }

void testdll(int arg)

4、f7編譯生成mydll4.dll

測試三1、建立win32專案, 選擇控制台應用程式,附加選項為空專案

2、新建main.cpp

#include

#include

#include

typedef void (*dllfunc)(int);

int main()

dllfunc dllfunc = (dllfunc)getprocaddress(hinstlibrary, "testdll");

if (dllfunc == null)

dllfunc(123);

freelibrary(hinstlibrary);

getchar();

return 1;

}3、f5編譯執行

動態鏈結庫DLL

函式和資料被編譯進乙個二進位制檔案 通常擴充套件名為.lib 靜態庫 在使用靜態庫的情況下,在編譯鏈結可執行檔案時,鏈結器從庫中複製這些函式和資料並把它們和應用程式的其它模組組合起來建立最終的可執行檔案 exe檔案 在多個同樣的程式執行時,系統保留了許多重複的 副本,造成記憶體資源浪費。動態庫 使用...

DLL(動態鏈結庫)程式設計

dll是現在常見的檔案,它整合了程式的很多功能在裡面。一般情況下,它不能直接被執行,常見的使用方法是用其他的 exe呼叫其執行,以使其內部功能表現出來。還有 ocx檔案也與之類似,也就是人們常說的com 1.簡要 windows api中所有的函式都包含在dll中,其中有3個最重要的dll。1 ke...

DLL 動態鏈結庫 專題

windows api中所有的函式都包含在dll中,其中有3個最重要的dll。1 kernel32.dll 它包含那些用於管理記憶體 程序和執行緒的函式,例如createthread函式 2 user32.dll 它包含那些用於執行使用者介面任務 如視窗的建立和訊息的傳送 的函式,例如createw...