DLL中如何獲取自身的路徑

2021-08-02 11:17:03 字數 722 閱讀 1431

getmodulefilename可以獲得指定模組的路徑,如果傳入null,則輸出所在程序exe的路徑,因此在dll中要想獲得當前dll的路徑,必須獲得dll的例項。這樣我們才能得到當前dll的路徑,總結可分為如下四種方法,這些方法的不同只在於獲得dll的模組例項控制代碼方法不同:

[cpp]view plain

copy

print?

//編譯器偽變數

void

__stdcall getcurdlldir()  

//getmodulehandleex獲得模組控制代碼

void

__stdcall getcurdlldir2()  

messagebox(null, szdir, text("getcurdlldir2-dll路徑名"

), mb_ok);  

}  //atl

void

__stdcall atlgetcurdlldir()  

//全域性hmodule

void

__stdcall globalgetcurdlldir()    

除錯dll匯出函式,可以借助於微軟的rundll32.exe程式 傳入待除錯的dll模組[空格]函式名即可

本工程配置如下:

DLL 內部獲取自身絕對路徑

常見的獲取方法是通過 getmodulehandle null 獲取當前exe控制代碼,然後通過getmodulefilename獲取exe路徑。dll在該路徑下加上 dll 即可。但是有時候 dll 與 exe 不一定在乙個位置,甚至 dll 並沒有按照指定的目錄關係與 exe 有明確的對應關係,...

詳解在bash指令碼中如何獲取自身路徑

dir cd dirname pwd 這是stackoverflow上推薦的方法 我看了兩遍,不明覺厲 後來改了一下 dir cd dirname pwd s0 dirname dirname s0 dir cd dirname pwd echo s0 echo dirname echo dir 執...

詳解在bash指令碼中如何獲取自身路徑

dir cd dirname pwd 這是stackoverflow上推薦的方法 我看了兩遍,不明覺厲 後來改了一下 dir cd dirname pwd s0 dirname dirname s0 dir cd dirname pwd echo s0 echo dirname echo dir 執...