日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > DLL中如何獲取自身的路徑

DLL中如何獲取自身的路徑

來源:程序員人生   發布時間:2015-07-03 09:03:29 閱讀次數:3166次

問題:DLL中如何獲得DLL本身所在的文件夾,而不是主調程序的。用GetCurrentDirectory獲得的是exe主調程序所在的目錄,不符合我的要求;用GetModuleFileName只能在DllMain中才能獲得到,由于DllMain第1個參數hInstance就是DLL模塊局并,而GetModuleFileName()只有傳入DLL模塊句柄才能獲得DLL路徑。

但是,如果不是DllMain項目,而是Win32 DLL勾選MFC選項的項目,入口函數是int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]),沒有DllMain那樣的入參hInstance,又該如何獲得DLL的模塊句柄呢?

方法1:需要傳入DLL句柄

 使用1個全局變量保存DllMain中的hInstance,然后在你需要的地方傳給::GetModuleFileName()。

方法2:需要傳入DLL名稱

HMODULE hMod = GetModuleHandle(_T("mydll.dll")); if(hMod != NULL) { TCHAR szBuffer[MAX_PATH] = {0}; GetModuleFileName(hMod, szBuffer, sizeof(szBuffer) / sizeof(TCHAR) - 1); }

方法3:通用辦法

TCHAR szDLLFolder[MAX_PATH + 1]; GetModuleFileName(AfxGetApp()->m_hInstance, szDLLFolder, MAX_PATH); //或GetModuleFileName(::AfxGetResourceHandle(), szDLLFullPath, MAX_PATH); //或GetModuleFileName(::AfxGetInstanceHandle(), szDLLFullPath, MAX_PATH);

先補充說明1下,VC有3種DLL項目

(1)MFC擴大DLL (dll被加載自動進入入口函數DllMain,但最好通過導出接口來使用)

extern "C" int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)

(2)Win32標準DLL (dll被加載自動進入入口函數DllMain,但最好通過導出接口來使用)

BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
(3)Win32勾選MFC選項DLL(dll被加載不會進入函數_tmain(),只能提供導出接口

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成年人视频免费在线观看 | 福利视频免费观看 | 国产成人欧美一区二区三区八 | 成年黄大片 | 另类在线| 久久一区精品 | 亚洲精品一区二区三区在线 | 毛片在线免费播放 | 男女福利视频 | 国产精品成人一区二区网站软件 | 国产精品五月天 | 91色在线| 国产传媒在线 | 成人手机在线免费视频 | 久久久精品日韩 | 做a视频| 国产伦精品一区二区三区视频黑人 | 欧洲亚洲一区二区三区四区五区 | 114一级毛片 | 欧美日韩黄 | 五月激情久久 | 欧美日韩国产专区 | 亚洲 欧美 视频 | 日韩午夜视频在线播放 | 久久久午夜精品理论片中文字幕 | 欧美激情在线精品一区二区三区 | 国产区在线看 | 中文字幕最新 | 中文字幕黄色 | 免费黄色网址视频 | 成人午夜网址 | 免费观看一级特黄欧美大片 | 成人黄色在线观看 | 性疯狂做受xxxx高清视频 | 精品亚洲精品 | 国产成人aaaa| 狠久久 | 久久免费电影 | 亚洲视频免费 | 免费一区区三区四区 | 天堂中文字幕在线 |