On May 19, 2008, at 12:53 PM, Jack Repenning wrote: On May 19, 2008, at 5:14 AM, Andrew Middleditch wrote:
What exactly does the 'Preprocess' option do in XCode (v3)? I'm referring to the right-click, context sensitive, menu option you get on a library file when it is included in the xcode project (.a file). I'm currently developing a program in plain C with Carbon libraries that uses the Oracle OCI library to connect to an Oracle database.
I have no idea how "Preprocess" might get involved in this problem. My reflex would be to say "it couldn't possibly!" but possibilities often surprise us. But your set-up (with your later correction that it's a .a, not a .o) suggests a different, and common, and therefore credible and perhaps more likely, explanation: .a libraries have an internal index that's both optional and fragile, and "missing symbol" problems often come down to a need to re-index. This can arise at the time you plop the library into your project (as opposed to simply using it from wherever Oracle actually installed it).
Check your build transcript for "may have been moved" warnings (which silently imply "... so I'm going to ignore the index," a classic Unix misdirection).
Check "man ranlib" for how to fix this.
Just to wrap up on this,
It seems the OP has been addressed, but for the record, Preprocess simply runs the active source code file through the C preprocessor and opens the preprocessed output (with all header files included and all macros expanded). It has no effect on libraries, frameworks, headers, resource files, etc. If anything in your project changes when you build / preprocess a library file / build again, it's most likely just a dependency problem in your project, and building twice in a row without the preprocess might have the same effect.
Chris |