tinysun212 / swift-windows

Swift compiler for Cygwin, MSVC, MinGW. Full development environment can be downloaded from the Swift for Windows.
http://SwiftForWindows.github.io
Apache License 2.0
331 stars 30 forks source link

'Failed to import bridging header' #7

Open ewmailing opened 7 years ago

ewmailing commented 7 years ago

Hi, I've been doing a lot of work to get Swift usable in a cross-platform way (Mac, iOS, Linux, Android, Raspberry Pi). I heard about this Windows port and the Swift for Windows project at https://swiftforwindows.codeplex.com, so I thought I would give it a try.

Using the prebuilt Visual Studio 2015 binaries for the command line swift and swiftc executables provided by the Swift for Windows page, I am able to build and run a trivial Swift program (e.g. print("Hello World").

So my next step is to use a bridging header. The way I'm approaching cross-platform is that I have a bunch of already cross-platform C libraries (e.g. SDL) which I bind to Swift. Then you can write cross-platform Swift code. But for this to work, I need a bridging header.

When I try specifying a bridging header, I get the error "failed to import bridging header".

I found there was an existing similar question about this that was closed. https://github.com/tinysun212/swift-windows/issues/3

However, the recommendation didn't work for me, but even if it did, I really need to be able to specify my own bridging header like the poster wanted to do.

To give you a more concrete example of what my build sequence looks like and what I want to do, below is a simple test program of mine when I build on Linux. (All the other platforms pretty much have the same sequence. For Visual Studio, I would change cc -c to cl.exe /c and the final link phase of swiftc to link.exe.)

Basically I would like to know how to get the -import-objc-header switch to work correctly so I can follow the same build semantics as the other platforms.

Thank you for your time.

/home/pinky/swift/usr/bin/swift -frontend -c -DBLURRR_PLATFORM_LINUX -DBLURRR_PLATFORM_LINUX=1 -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/BlurrrCore -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/ALmixer -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/AL -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/chipmunk -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_ttf -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_image -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL2 -I/home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source -primary-file /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/main.swift /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/main.swift /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/BlurrrMain.swift -import-objc-header /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/MySwiftBridgingHeader.h -emit-module -module-name MyBlurrrProject -o

[ 66%] Building Swift object CMakeFiles/MyBlurrrProject.dir/source/BlurrrMain.swift.o /home/pinky/swift/usr/bin/swift -frontend -c -DBLURRR_PLATFORM_LINUX -DBLURRR_PLATFORM_LINUX=1 -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/BlurrrCore -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/ALmixer -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/AL -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/chipmunk -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_ttf -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_image -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL2 -I/home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source -primary-file /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/BlurrrMain.swift /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/main.swift /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/BlurrrMain.swift -import-objc-header /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/MySwiftBridgingHeader.h -emit-module -module-name MyBlurrrProject -o CMakeFiles/MyBlurrrProject.dir/source/BlurrrMain.swift.o

[ 75%] Building C object CMakeFiles/MyBlurrrProject.dir/source/ALmixerSwiftBinding.c.o /usr/bin/cc -DBLURRR_PLATFORM_LINUX -DBLURRR_PLATFORM_LINUX=1 -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/BlurrrCore -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/ALmixer -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/AL -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/chipmunk -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_ttf -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_image -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL2 -I/home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source -o CMakeFiles/MyBlurrrProject.dir/source/ALmixerSwiftBinding.c.o -c /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/ALmixerSwiftBinding.c

[ 83%] Building C object CMakeFiles/MyBlurrrProject.dir/source/ChipmunkSwiftBinding.c.o /usr/bin/cc -DBLURRR_PLATFORM_LINUX -DBLURRR_PLATFORM_LINUX=1 -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/BlurrrCore -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/ALmixer -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/AL -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/chipmunk -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_ttf -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_image -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL2 -I/home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source -o CMakeFiles/MyBlurrrProject.dir/source/ChipmunkSwiftBinding.c.o -c /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/ChipmunkSwiftBinding.c

[ 91%] Building C object CMakeFiles/MyBlurrrProject.dir/source/SDLSwiftBinding.c.o /usr/bin/cc -DBLURRR_PLATFORM_LINUX -DBLURRR_PLATFORM_LINUX=1 -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/BlurrrCore -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/ALmixer -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/AL -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/chipmunk -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_ttf -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL_image -I/home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/include/SDL2 -I/home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source -o CMakeFiles/MyBlurrrProject.dir/source/SDLSwiftBinding.c.o -c /home/pinky/Source/Blurrr/Examples/HelloBlurrrSwift/source/SDLSwiftBinding.c

[100%] Linking Swift executable MyBlurrrProject /home/pinky/swift/usr/bin/swiftc CMakeFiles/MyBlurrrProject.dir/source/main.swift.o CMakeFiles/MyBlurrrProject.dir/source/BlurrrMain.swift.o CMakeFiles/MyBlurrrProject.dir/source/ALmixerSwiftBinding.c.o CMakeFiles/MyBlurrrProject.dir/source/ChipmunkSwiftBinding.c.o CMakeFiles/MyBlurrrProject.dir/source/SDLSwiftBinding.c.o -o MyBlurrrProject -L/usr/lib/gcc/x86_64-linux-gnu/6 /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libBlurrrCore.so /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libALmixer.so /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libopenal.so /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libchipmunk.so /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libSDL2_ttf.so /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libSDL2_image.so /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib/libSDL2.so -lm -lc -Xlinker -rpath -Xlinker /home/pinky/Source/Blurrr/Release/BlurrrSDKLinux/Libraries/SDK/Linux/C/lib

tinysun212 commented 7 years ago

Could you try this on latest Cygwin port ? (https://github.com/tinysun212/swift-windows/releases/tag/swift-cygwin-20160913)

tinysun212 commented 6 years ago

@ewmailing, Could you try this on latest MinGW-w64 port ? (https://swiftforwindows.github.io/)