你可以强制未引用的代码从静态库中链接吗?
这里是场景 - 我创建了一个自定义的NSView子类,并且实现在一个静态库中。该类绝不会从最终的可执行文件引用,只能从Interface Builder XML文件引用。由于它没有被引用,因此它不会在链接时被包含,并且因此在运行时无法找到该类。你可以强制未引用的代码从静态库中链接吗?
有没有什么办法强制它被链接到其他感谢链接动态或直接编译到可执行文件本身?
你可以使用class
类的方法,它主要是一个没有操作,但会从你的代码引用它。
int main(int argc, const char** argv)
{
[MyClass class]; // There you are! MyClass is now referenced from your code.
/* ... rest of your main function ... */
}
如何使指针指向可执行文件中的违规类?这应该强制它,并不会要求你分配内存等。
这也可以工作。我对上述答案提出了同样的问题 - 是否也会引入这些功能,还是我也需要引用这些问题? 无论哪种方式,这看起来像它回答了我的问题。我假设,如果我需要明确地做,取一个函数的地址应该足以强制链接器包含它。无需实际调用它。 – Xtapolapocetl 2010-07-13 17:51:30
如果您已经对该类进行了引用,那么编译器将需要了解整个对象,而不仅仅是其中的一部分,所以是的,只是指向该类应该强制链接器将其全部包含在内。 – 2010-07-13 23:26:04
这是个好主意。这是否也会引入所有功能,还是必须以某种方式引用所使用的入口点? – Xtapolapocetl 2010-07-13 17:48:07
@Matt Spong:它将带来类和类或它的实例使用的所有东西。 – zneak 2010-07-13 18:09:58