1

我在 Objective C(用于 OSX)中创建了一个静态库来执行一些计算。然后我编译它并将其包含在另一个项目中。后来我无法在我的代码中使用它。

1> 当我写的时候

import "Auth.h"

它给了我一个File Not Found错误。为什么会这样?

2> 然后我必须将搜索路径设置为库的源,并且它被正确编译和执行。这是否意味着我不能在不分发源代码的情况下将编译后的库与其他项目一起使用?

3> 我认为如果指定了搜索路径,则不需要编译库。所以我删除了图书馆。但这没有用。这意味着源+库都是必需的。

实际发生了什么。我只想将 libAuth.a 分发给该项目的其他团队,而不提供源代码。我怎样才能做到这一点。

4

2 回答 2

1

您只需要提供库文件(.a)和头文件;源文件可以保持私有和未分发。

确保为可能使用该库的所有体系结构(x86_64以及在 OSX 上)编译该库,用于创建一个胖二进制文件。i386lipo .a

例如:

xcrun --sdk macosx10.8 clang -arch x86_64 -o file1.o file1.m
xcrun --sdk macosx10.8 clang -arch x86_64 -o file2.o file2.m
xcrun --sdk macosx10.8 libtool -static -arch_only x86_64 -o libmystuff_x86_64.a file1.o file2.o

xcrun --sdk macosx10.8 clang -arch i386 -o file1.o file1.m
xcrun --sdk macosx10.8 clang -arch i386 -o file2.o file2.m
xcrun --sdk macosx10.8 libtool -static -arch_only i386 -o libmystuff_i386.a file1.o file2.o

xcrun --sdk macosx10.8 lipo -arch x86_64 libmystuff_x86_64.a -arch i386 libmystuff_i386.a -create -output libmystuff.a
于 2013-08-27T12:33:10.617 回答
1

尝试在您的主要项目目标设置中添加以下内容;

“-ObjC”和“-all_load”到构建设置>链接>其他链接器标志,“$(TARGET_BUILD_DIR)/usr/local/lib/include”和“$(OBJROOT)/UninstalledProducts/include”到构建设置>搜索路径> 标头搜索路径,“$(BUILT_PRODUCTS_DIR)”构建设置 > 用户标头搜索路径。

于 2013-08-27T12:43:21.740 回答