从可可代码中获取链接库列表

发布于 2024-10-13 02:25:13 字数 77 浏览 6 评论 0原文

在我的应用程序启动时,我需要获取链接到它的库的列表。 不幸的是,我在可可中找不到任何示例,如何从代码中做到这一点。有人能帮我解决这个问题吗?

On my application starting I need to get list of libraries that are linked to it.
Unfortunately, I could't find any example in cocoa how can I do it from code. Can anybody help me with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山有枢 2024-10-20 02:25:13

所以,可能有比这更好的方法(这是完全未经测试的写入此文本字段代码),但我认为这可以解决问题:

uint32_t imageCount = _dyld_image_count();
char **names = calloc(sizeof(char *), imageCount);
int32_t *versions = calloc(sizeof(int32_t), imageCount);
for (uint32_t idx = 0; idx < imageCount; idx++) {
    names[idx] = _dyld_get_image_name(idx);
    versions[idx] = NSVersionOfLinkTimeLibrary(names[idx]);
}

如果我正确理解 dyld.h,这应该会让你所有当前加载的 mach-o 图像及其链接时版本的列表。任何链接时版本为 -1 的 mach-o 映像都不会与主可执行文件链接。

So, there's probably a better way than this (and this is completely untested written-into-this-text-field code), but I think this would do the trick:

uint32_t imageCount = _dyld_image_count();
char **names = calloc(sizeof(char *), imageCount);
int32_t *versions = calloc(sizeof(int32_t), imageCount);
for (uint32_t idx = 0; idx < imageCount; idx++) {
    names[idx] = _dyld_get_image_name(idx);
    versions[idx] = NSVersionOfLinkTimeLibrary(names[idx]);
}

If I'm understanding dyld.h properly, this should get you a list of all the currently loaded mach-o images and their link-time versions. Any mach-o image with a link-time version of -1 wasn't linked against from the main executable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文