2012-12-11 59 views
1

任何人都可以告訴我,如果在Windows和Linux平臺上有一種方法來確定共享庫內的函數調用中共享庫文件的位置。我有一個用C編寫的共享庫,它將在linux和windows下編譯和運行。我希望能夠通過函數確定共享庫的當前位置,以便確定某些配置和其他文件的位置。確定共享庫的目錄

我已經在尋找方法來做到這一點,但我現在找不到任何答案,雖然我確信我看到一篇文章告訴我如何以特定平臺的方式來做到這一點。

+0

更新。看來,在Linux上,addr函數是要走的路。我會試試這個,但有沒有任何窗口等效。 – user1894504

回答

1

在Windows上,你可以使用GetModuleFileName()來獲得一個DLL的完整路徑:

char path[MAX_PATH]; 
if (GetModuleFileName(GetModuleHandle("kernel32.dll"), path, MAX_PATH) && 
    ERROR_INSUFFICIENT_BUFFER != GetLastError()) 
{ 
    char* last_slash = strrchr(path, '\\'); 
    if (last_slash) *last_slash = 0; 
    printf("path=[%s]\n", path); 
} 

輸出:

路徑= C:\ WINDOWS \ SYSTEM32]