某些库在链接到Xcode项目时需要-all_load链接器标志.但是,如果库之间存在符号冲突,则会导致链接器错误.解决方案是使用-force_load,它有效地允许您在某些库上使用-all_load,但在其他库上不使用.all_load.
然而,这反过来又导致了一个新问题,至少对我而言.每当我使用-force_load和库的相对路径时,链接器总是会在库和它自身之间发现符号冲突.似乎链接器认为具有其绝对路径的库和具有其相对路径的库是不同的库,因此发现库与其自身之间的冲突.
我可以通过使用带标志的绝对路径来避免这种情况.但这不是一个很好的解决方案,因为在我的文档目录中保存库的源代码很方便.但是文档目录的路径在其他机器上会有所不同.
问题:任何人都可以使用force_load来处理库的相对路径吗?
编辑:有关背景信息,请参阅此问题
我有自定义二进制资源(动画游标),它们想要作为资源存储在Visual Studio C++中的静态库中.事实证明,自定义二进制资源不会被:: LoadCursor()加载,也不会被:: FindResource()找到(如果它是自定义资源和静态库).
这个问题 提供了一些解决方法.
根据它的建议,如果我将*.res文件作为"配置属性 - >链接器 - >附加依赖"添加到exe,那么静态库将能够找到该资源.
但是,如果静态库是dll的一部分,并且我将其作为附加依赖项链接,则不会再次找到它!
如何链接dll中的资源?
或者只是在静态库中找到二进制文件?问题中的方法非常麻烦.
我需要在iOS应用程序中使用libclang(用于诊断和语法突出显示)但我似乎无法弄清楚如何按原样构建它,更不用说iOS了.使用CMake我为LLVM生成了一个Xcode项目,但Xcode耗尽了内存和磁盘空间进行交换(合并25GB!)并在打开项目时崩溃.我需要从中获取一个静态库,然后我可以手动导入标头,这应该不是问题.我需要运行什么configure/make/cmake命令[组合]?
注意:如果它有任何区别,我只需要Index.h文件中的函数.
提前致谢.
我正在尝试构建一个静态库,它具有在Podfile中指定的不同依赖项(例如AFNetworking).我不希望依赖项包含在最终的静态库中(调用libMyProject.a),我只想链接它们,然后创建一个MyProject.Podspec文件,我可以在其中放置相同的依赖项.
问题是,当我构建libMyProject.a时,libPods.a被链接和包含,因此如果我分发libMyProject.a并且其他人将它集成在使用某些相同依赖项的项目中,则会出现重复的符号问题.
如何链接libPods.a lib但不包含在libMyProject.a中?它应该像链接其他现有框架一样工作.
谢谢!
我的podspec需要一个静态库(OpenSSL).为方便起见,我正在运送带有吊舱的图书馆.
静态库包含:
MyPod/openssl/bin/libcrypto.a和MyPod/openssl/bin/libsll.aMyPod/openssl/include/openssl/*.hMyPod/openssl/include/LICENSE在我的podspec中表达这个的正确方法是什么?我已经看到了使用以下属性组合的各种示例,我正在尝试不同的组合:
source_files
public_header_files
private_header_files
preserve_paths
libraries
xcconfig
vendored_libraries
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,我可以在子规范中定义这个静态库吗?
Java 8之前的Java版本要求本机代码位于共享库中,但我已经阅读了Java 8,可以将静态链接库与JNI一起使用.我搜索了一些例子但找不到任何例子.
如何将JNI库静态链接到我的java应用程序?
java java-native-interface static-libraries static-linking java-8
我想在swift中使用我的webrtc .a静态库.你能帮帮忙吗?我读过你不能在swift中使用静态库,这是真的吗?
我正在尝试创建一个包含目标文件和现有静态库的静态库,这些库都是在构建过程中先前编译的.有没有一种简单的方法可以使用"ar"来执行此操作,还是需要解压缩(ar x library_name)每个库并将其目标文件添加到统一库中?
我使用这种方法创建了iOS Framework项目:https://github.com/jverkoey/iOS-Framework
工作非常简洁,但我对如何包含我的框架工作所需的库/框架有点困惑,特别是如何做到这一点,以便在使用我的框架的第三方客户端应用程序可以包含这些库也没有冲突.
假设我的框架代码需要这两件事:
第一个是iOS框架.当我将它添加到我的框架中的"Link Binary With Libraries"阶段并尝试编译使用我的框架的客户端项目时,链接器抱怨缺少符号 - 我需要将FacebookSDK添加到客户端项目中这很棒:没有可能如果客户端应用想要使用Facebook,则会发生冲
但是,当我对Flurry静态库执行相同操作时,编译客户端项目时会出现重复符号错误.这让我有点困惑,因为不是FacebookSDK.framework只是一个打包的静态库?
ukaszs-iMac:FacebookSDK.framework lukasz$ file Versions/A/FacebookSDK
Versions/A/FacebookSDK: Mach-O universal binary with 3 architectures
Versions/A/FacebookSDK (for architecture i386): current ar archive random library
Versions/A/FacebookSDK (for architecture armv7): current ar archive random library
Versions/A/FacebookSDK (for architecture cputype (12) cpusubtype (11)): current ar archive random library
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我正在Proto.framework为Swift中的OS X 编写动态Framework().我想要包含一个libstat.a用Objective C编写的静态库()中的代码.这就是我所拥有的:
// Dynamic.swift in Proto.framework
class Dynamic {
func doSomethingWithStat() {
Stat().statThing()
}
}
// Stat.h in libstat.a static library
@interface Stat : NSObject
- (void)statThing;
@end
// Stat.m
@implementation Stat
- (void)statThing {
NSLog(@"OK");
}
@end
Run Code Online (Sandbox Code Playgroud)
在我的Proto.framework目标中,我将它链接到libstat.a.当我尝试构建Proto时,自然它无法编译,因为它找不到定义Stat().statThing().它不知道我的静态库的符号.我该怎么说呢?
对于应用程序,我会使用桥接头#import <Stat/Stat.h>.但编译器错误并告诉我Bridging headers aren’t allowed in frameworks.好.
所以我把它包含在我的"伞头"(Proto.h)中,但这告诉我error: include of non-modular header inside framework module.好.
即使在干净的构建之后,使我的Stat库目标Defines module: YES似乎也不会改变错误.所以我不知道该怎么做.
有人能指出我正确的方向吗?