1

谁能告诉我是否有办法在 Windows 和 linux 平台上从共享库中的函数调用中确定共享库文件的位置。我有一个用 C 编写的共享库,它将在 linux 和 windows 下编译和运行。我希望能够通过函数确定共享库的当前位置,以便确定某些配置和其他文件的位置。

我已经在寻找方法来做到这一点,但我现在找不到任何答案,尽管我确信我曾经看过一篇文章,其中讲述了如何以特定于平台的方式做到这一点。

4

1 回答 1

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]

于 2012-12-11T11:18:43.473 回答