是否有可能以编程方式加载.dll或静态库(.a)文件,这将返回用于mac os x的objective-c中的汇编语言?
如何在objective-c for mac osx中加载和卸载程序集?
发布于 2014-01-25 01:02:38
我承认,即使在阅读了微软关于Assembly Class的文档之后,我仍然不清楚什么是程序集。他们说:
表示一个程序集,它是公共语言运行时应用程序的可重用、可版本化和自描述的构造块。
“可重用、可版本化和自描述”的部分听起来像是一个框架。
如果这确实是你想要加载的,那么你有很多选择。你最好的办法就是直接链接到框架上。当你的应用程序启动时,操作系统会自动加载它。
如果您想手动加载它,有许多方法可以做到这一点。如果它是您的应用程序附带的框架,那么您可以简单地将其放入应用程序包的Frameworks文件夹中,然后使用:
NSBundle* frameworkBundle = [NSBundle bundleWithIdentifier:@"<your bundle's identifier>"];
if (frameworkBundle != NULL)
{
[frameworkBundle load];
}您也可以使用dlopen() (有关详细信息,请参阅man dlopen(3) )。这会将一个动态库加载到您的进程空间中。
我从来没有理由直接使用dlopen()。在极少数情况下,我的应用程序可能需要在不支持该框架的旧操作系统上运行,我使用了上面通过NSBundle描述的手动加载。
https://stackoverflow.com/questions/21325604
复制相似问题