import =动态链接? &安培; include =静态链接?

时间:2012-06-26 16:34:19

标签: objective-c linker header-files

我想知道导入和包含在Object-c

中的区别

顺便说一句,我不清楚动态链接和静态链接的区别。

如果我使用带静态链接的库, 这是否意味着我从库中为我的程序复制我需要的代码并与它们链接? 然后我的程序可以使用库中的代码。

如果我使用带动态链接的库, 这意味着我只在程序运行时将我需要的代码从库引用到我的程序。 然后我的程序可以使用“参考代码”。

1 个答案:

答案 0 :(得分:2)

#import#include和静态与动态关联是两个完全不相关的主题。

#include直接在另一个文件中包含文件的内容,并且在C中可用(因此也在Objective-C中)。但是,只有当 时,才会包含文件的内容。 (例如,您不想两次声明相同的变量;它会导致编译器错误!)这就是在Objective-C中添加#import的原因;它确切地说:仅当该文件尚未被#import编辑时才包含文件的内容。如果您不确定要使用什么,则应该使用#import

静态与动态链接完全不同 - 链接在编译后发生,因此无法与#import#include相关联,它们属于源代码。您对链接的想法完全正确,但是 - 您的应用中包含静态链接的库,您的用户不需要它们。引用动态链接库,并且必须存在于用户的计算机上才能运行应用程序。