就是我一個程序調用動態庫,在動態庫里面獲取動態庫自己所在的路徑
8 个解决方案
TCHAR buf[MAX_PATH]={0};
GetModuleFileName(NULL, buf, MAX_PATH);
GetModuleFileName(NULL, buf, MAX_PATH); 取的是exe的路徑
GetModuleFileName的第一個參數用Dll的句柄就可以取Dll的路徑
恩樓上的方法也可以,還有另外一種方法
假如你了解PE格式
IMAGE_OPTIONAL_HEADER::DataDirectory[0].VirtualAddress
可以看作你這個DLL外部符號的RVA基址
IMAGE_EXPORT_DIRECTORY::Name字段存儲的就是你這個模塊的名稱的RVA
靜態調用的動態庫,應該是和可執行文件同目錄的吧。動態調用的動態庫,不知道路徑也無法調用啊。
dll的句柄從DllMain中得到,然后調用GetModuleFileName