问题标签 [weak-linking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2323 浏览

c - 弱链接的便携性如何?#pragma 弱 my_symbol

弱链接的便携性如何?

我看到了这个问题: how-to-make-weak-linking-work-with-gcc讨论了如何让它工作。但是有没有一种不需要 gcc 的好方法呢?

弱链接和用#ifdef 保护声明有什么区别?

0 投票
6 回答
21861 浏览

c++ - Visual Studio 中的 GCC 样式弱链接?

GCC 能够通过__attribute__((weak)). 我想在用户可以在其应用程序中覆盖的静态库中使用弱符号。GCC 风格的弱符号可以让我这样做,但我不知道它是否可以用 Visual Studio 完成。

Visual Studio 是否提供类似的功能?

0 投票
1 回答
637 浏览

iphone - 在 iPhone 上弱链接 StoreKit 框架时出错

我正在尝试向我的应用添加应用内购买支持。我希望该应用程序仍然能够支持 OS2.2.1,但除非 OS 版本为 3.0 或更高版本,否则 IAP 不可用。

我尝试过弱链接 StoreKit 框架。基本上,我已将 StoreKit.framework 添加到框架中,但没有添加到目标中的 Link Binary With Libraries 中,并且根据 Apple 说明将 weak_framework -StoreKite 添加到其他标志行。现在,当我在 OS2.2.1 上运行应用程序时,它甚至在 main 函数执行之前就在 _read_images 中崩溃了。我真的需要支持 2.2.1,而且我知道其他应用程序也这样做。谢谢你的帮助。

0 投票
1 回答
1596 浏览

cocoa - 如何避免 XCode 框架弱链接问题?

我正在构建一个利用仅 Mac OS X 10.6 技术的应用程序,但不放弃对 10.5 Leopard 的向后兼容性。

我这样做的方法是将 10.6 SDK 设置为基础 SDK,弱链接所有框架并将部署目标设置为 10.5,如下所述:

http://developer.apple.com/mac/library/DOCUMENTATION/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

这很好用;在拨打仅限雪豹的电话之前,我需要检查选择器或确实存在该类。或者我可以在拨打电话之前检查操作系统版本。

问题是它非常脆弱。如果我只打一个 10.6 的电话,我就会破坏 Leopard 的兼容性。因此,即使使用正常的代码代码完成功能也可能很危险。

我的问题:在进行发布构建之前,有什么方法可以检查 10.5 上未定义哪些调用?某种静态分析,甚至只是一个技巧(目标设置其他 SDK?)都可以。

我显然应该在发布任何东西之前在 Leopard 机器上进行测试,但即便如此,我也不可能在每次发布之前都遍历程序的所有路径。

任何意见,将不胜感激。

此致,

坦率

0 投票
2 回答
5887 浏览

iphone - 弱链接框架

由于 adMob 包的最新版本,我已将 MessageUI 框架添加到我的项目中。由于我希望将我的应用程序部署到 2.x 操作系统设备,因此我按照建议使用了弱链接 MessageUI。

如果我为 iPhone 设备 3.0 构建,它工作正常。

如果我为 iPhone 设备 2.2.1 构建,我会收到一个链接错误:“ld: framework not found MessageUI”

我哪里错了?

0 投票
1 回答
3889 浏览

c - 与静态库的弱链接

我在 .c 文件中声明了一个带有 GCC 弱属性的外部函数:

编译后的目标文件将weakFunction 定义为弱符号。nm的输出:

我调用弱定义函数如下:

当我通过将目标文件定义为 GCC ( gcc main.o weakf.o -o main.exe) 的参数来链接程序时,弱符号工作正常。如果我将weakf.o 排除在链接之外,则main.c 中的函数地址为NULL,并且不会调用该函数。

问题是,当weakf.o 在静态库中时,由于某种原因,链接器找不到函数并且函数地址总是最终为NULL。静态库是用 ar 创建的:ar rcs weaklibrary weakf.o

有人有类似的问题吗?

0 投票
2 回答
3753 浏览

iphone - iPhone上的弱链接拒绝工作

我有一个主要针对 3.0 的 iPhone 应用程序,但它在可用时利用了更新的 API。代码是这样的:

现在,根据 Apple 曾经说过的所有内容,如果相关 API 链接较弱,那将正常工作,因为动态链接器将评估UIApplicationDidEnterBackgroundNotificationNULL. 除了它没有。应用程序可以编译,但一旦运行它if (UIApplicationDidEnterBackgroundNotification != NULL)就会崩溃EXC_BAD_ACCESS

这仅仅是我需要设置的编译器标志的问题吗?还是我以错误的方式解决这个问题?

0 投票
1 回答
539 浏览

cocoa - 使用“部署目标”重命名方法和 Cocoa Touch 中的弱链接

在 iPhone SDK 3.2 中,[CLLocation getDistanceFrom:]被重命名为[CLLocation distanceFromLocation:]. 我的项目是使用 3.2 作为 Base SDK 和 3.0 的“部署目标”编译的,这意味着仅在 3.2 中可用的框架是弱链接的,因此我的应用程序仍然可以在 3.0 上运行。

如果我将呼叫更改为使用新名称distanceFromLocation:,运行 3.0 或 3.1 的设备会发生什么情况?我假设方法调用将失败并被0.0返回(因为 Cocoa 为无法识别的选择器返回默认值)。

如果我的假设是正确的,这意味着我现在必须忍受编译器警告,直到我不再想以 3.0 为目标。

0 投票
1 回答
2649 浏览

ios - iPhone SDK中弱链接的替代方案?

我希望使我的应用程序与旧版本的 iPhone OS 兼容。我确实看到提到的弱链接是一种选择。我可以使用操作系统版本检测代码来避免操作系统无法处理的代码块吗?(说 iAD?)

如果是,用什么代替if(OS >= 4.0)

0 投票
2 回答
33626 浏览

ios - 弱链接 - 检查一个类是否存在并使用该类

我正在尝试创建一个通用的 iPhone 应用程序,但它使用仅在较新版本的 SDK 中定义的类。该框架存在于较旧的系统上,但框架中定义的类不存在。

我知道我想使用某种弱链接,但是我能找到的任何文档都谈到了函数存在的运行时检查——我如何检查一个类是否存在?