【问题标题】:What is an upward dependency for linking?什么是链接的向上依赖?
【发布时间】:2012-06-18 15:55:02
【问题描述】:

ld 支持一些选项来指定“OS X 上的向上依赖项。这里的向上依赖项是什么?

-upward-lx  This is the same as the -lx but specifies that the dylib is an upward dependency.
-upward_framework name[,suffix]
             This is the same as the -framework name[,suffix] but also specifies that the framework is an upward dependency.

【问题讨论】:

    标签: macos ld


    【解决方案1】:

    向上依赖是违背正常依赖顺序的东西。假设库“A”中的代码调用库“B”中实现的函数;库“A”依赖于“B”。现在假设库“B”还包含依赖于库“A”中某些内容的代码;这是一个向上的依赖(这通常是一件非常糟糕的事情)。

    我认为,如果您遇到这种情况,那么您应该通过中介进行间接回调而不是依赖链接器来解决代码中的问题。

    回调/中介方案的示例如下...

    想象一下,库“A”中的代码仍然依赖于库“B”,但库“B”具有注册回调函数以执行特定操作的机制。作为中介的第三个模块可以安排库“A”中的函数通过库“B”的回调来调用,而不是让库“B”直接调用库“A”。链接器现在只需解决从“A”到“B”的依赖关系,并且在运行时伪造从“B”到“A”的受控关系,而不是在链接阶段需要向上依赖链。

    【讨论】:

    • 该选项必须具有一定的实用性。你有什么例子吗?
    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 2018-04-10
    • 2011-10-16
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多