English 中文(简体)
将“SOS”错误与多个静态图书馆相互参照
原标题:Linking error with iOS app with cross-referencing multiple static libraries

I m splitting up an Xcode iPhone project into multiple smaller projects for code reuse. The structure looks like this:

+------------+
|    App     |
+------------+
      |
      +------------------+
      |                  |
+--------------+ +--------------+
| Static Lib A | | Static Lib B |
+--------------+ +--------------+
        |                |
        +----------------+
                |
         +--------------+  +----------------+
         | Static Lib Z |--| Static Lib KAL |
         +--------------+  +----------------+

Everything compiles correctly, but as soon as the app is linked, the linker cannot find 2 symbols of the KAL (the open source calendar lib) library. Each library has a cross-reference and all the archives are added to the "Link binary with libraries" build phase.

错误是:

Undefined symbols:
"_OBJC_CLASS_$_KalViewController", referenced from:
objc-class-ref-to-KalViewController in libA.a(AViewController.o)
"_OBJC_CLASS_$_KalDate", referenced from:
objc-class-ref-to-KalDate in libA.a(AViewController.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status

I m using a class from LibZ in LibA s AViewController which in his turn is using a class in LibKAL.

PS:A和B的分离只是因为并非所有上诉机构都需要两个机构提供的功能。

问题回答

Okay so like many people, having spent several evenings trying to figure this out I managed to get it to work almost right after placing this.
The problem was that when I had added the references to the library projects, Xcode aded the projects itself as dependencies, instead of the archive files. Which was the cause of the linker (obviously) not finding the symbols.





相关问题
How to change out-of-focus text selection color in Xcode?

Okay, I ll bite. I ve got really pleasant code/window colors set up in Xcode. Ordinarily, my selection color is very visible. When I am doing a project search and iterating through the results, ...

Iphone NSTimer Issue

Hi I am new to objective c. I am trying to make an app for iphone. I have a button on my view, and the click on which the function playSound is called. This is working properly. It does plays the ...

Include a .txt file in a .h in C++?

I have a number of places where I need to re-use some template code. Many classes need these items In a .h could I do something like: #include <xxx.txt> and place all of this code in the ....

Iterating over string/strlen with umlauted characters

This is a follow-up to my previous question . I succeeded in implementing the algorithm for checking umlauted characters. The next problem comes from iterating over all characters in a string. I do ...

Xcode open two editor windows with same file

Is it possible to open the same file in two separate windows in Xcode. I can open a file in one window and the same file in the main Xcode editor window, but I wanted two separate fulltime editor ...

Forcing code signing refresh in Xcode

In our environment, we share resources across multiple projects and platforms. When building for iPhone, only a subset of those resources are needed. Since that subset is still considerable, we have ...

热门标签