有没有办法在 C 语言中实现目标文件的链接,使得某些对象只能相互链接在一起?
例如。尝试链接对象 1 和对象 2 将工作并生成工作可执行文件,但尝试链接对象 1 和对象 3 将返回错误,或者生成的可执行文件将无法正确工作。
背景信息: 基本上,情况是程序员 A 和程序员 B 将他们的对象发送给链接器公司。 A 和 B 希望确保链接器公司只能将他们的对象链接在一起,而不能将他们的对象与其他程序员(即程序员 C 等)对象链接(因为这是非法的)。
Jörgen Sigvardsson 的回答很有用,但我想知道是否有更简单的方法。例如。如果尝试使用 gcc 将非法对象链接在一起,链接器公司可以确定需要哪些符号,然后将它们添加到非法对象中,轻松突破限制。
最佳答案
是的,有办法。在对象 1 中:
extern int object_1_symbol;
int object_2_symbol;
在对象 2 中:
int object_1_symbol;
extern int object_2_symbol;
这将要求您将这些对象链接在一起,并阻止您将其与对象 3 链接在一起。这并非万无一失,但它可能会满足您的目的。
关于c - C 中的一对一链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867398/