objective-cxcodeswiftios8chartboost

Failed to import bridging header


I've read a lot of questions and answers that deal with a similar issue, but I have yet to find a solution. If anyone could shed some light, that would be wonderful.

I created a Swift project and now I want to combine it with some Objective-C. My "failed to import bridging header" only occurs when I attempt to #import my Chartboost.h file. So, as long as I don't have anything in my bridging header file, Xcode finds it and gives me no issue. But once I add this:

#import <Chartboost/Chartboost.h>

I get the error along with 38 other errors saying "Swift Compiler Error - Function definition not allowed here".

I've correctly imported my framework. And my framework search path is correct. And it's only when I import the Chartboost framework. UIKit and Foundation work fine.

Here is what I did leading up to the issue....First, I created a new Obj-C file and then clicked "Yes when Xcode gave me a pop-up asking if it could configure a bridging header. This created "FunFacts-Bridging-Header.h"

Then I made sure Objective-C Bridging Header path was correct under Swift Compiler - Code Generation.

I even put in a very specific path /Users/me/Desktop/FunFacts/FunFacts-Bridging-Header.h and it still says "Failed to import".

I've also set Defines Module to "Yes" (because I heard that may help). And my product module name is FunFacts.

Why is FunFacts-Bridging-Header.h failing to import when I try to add #import ?


Solution

  • I figured out 2 solutions!

    1) This isn't the prettiest way to do it, but I copy and pasted all my code from my Chartboost.h file into my Bridging-Header.h file instead of importing . This worked. But I knew there was a better way, so I kept hunting...

    2) The correct solution, I believe, is what I did next. My project's (not target) Framework Search Paths was empty. So, I went ahead and added the path to the Chartboost SDK like so: /Users/me/Desktop/Apps/SDKs/Chartboost
    Now it builds and runs with no problem and I didn't have to copy and paste everything into the bridging header. All that was needed was

    #import <Chartboost/Chartboost.h>
    

    If anyone is having a similar issue, just read what I did in my question, and then follow it up with this answer.