It is an Objective-C++ file, because Superpowered calls some C++ code. The bridging header in the SuperpoweredFrequencies example that you looked at introduces a new Objective-C class, Superpowered, which is not part of the library, but of the example, and is implemented in Superpowered.mm. From what I'm seeing you can mix Objective-C and C++ code in Objective-C++, which allows Objective-C to use C++ classes. However, you cannot interface directly with C++, and that's where Objective-C++ comes to the rescue. I haven't programmed in Objective-C++, but I do have experience with C, C++, Objective-C, and Swift, so here are some observations and ideas based on looking at the Superpowered SDK and sample code.Ī bridging header lets Swift interface directly with Objective-C, and since Objective-C is a strict superset of C, this implies interfacing with C as well. mm files, that's why I make my #include of. See the trick ?Īnd finally I include all the wrapped classes in my Bridging-Header, like that I can instantiate my wrapped objects from Swift. With that, when I'll call start of a SuperpoweredRecorderWrapped in my Swift code, this one will call start of _wrapped, a SuperpoweredRecorder object. I create a SuperpoweredRecorder object as property named _wrapped and in my methods, I call the corresponding method of the _wrapped object. I import both SuperpoweredRecorderWrapped.h and SuperpoweredRecorder.h. mm and I implement SuperpoweredRecorderWrapped on it. h file where I prototype my wrapper with the name SuperpoweredRecorderWrapped, and I also prototype in it all the methods of the SuperpoweredRecorder of the lib that I want to use. Here is an example with the SuperpoweredRecorder object from the lib : So, as Swift cannot interact directly with C++ but can with Objective-C, I had to create objects in Objective-C++ (.mm file, a mix between C++ and Objective-C) that wrap C++ classes of the lib Superpowered. So yes, I'm a little bit confused with all that stuff, can you help me to understand how can I use all the Superpowered lib in my Swift project please ?Īs I said in comment to I had a little conversation with the CTO of Superpowered that helped me a lot to find the solution below. mm file (the code of SuperpoweredRecorder.cpp ? But I don't have access to it) mm file and I don't know what I have to put in that. cpp files and I have to create a wrapper for cpp (a little bit like I did with the bridging header, no ?) but that includes a. So I saw that it is because SuperpoweredRecorder.h includes some. If I try to include the SuperpoweredRecorder.h file in my Bridging-Header-File I have these errors : Until here, it's great, except that I can't for exemple create a SuperpoweredRecorder object. My viewController file where the code in Swift is, and where I can create a Superpowered object thank's to the Bridging-Header-File, and call the methods that I've put in it. The same Bridging-Header-File that in the sample project except that I include SuperpoweredIOSAudioIO.h so I can use SuperpoweredIOSAudioIODelegate. So with this sample project in mind, I've created my own project, here is some screenshots : It comes out from nowhere, not even their lib files. The viewController file where the code in Swift is, and where I can create a Superpowered object thank's to the Bridging-Header-File, and call the methods that I've put in it.Īnd wtf I don't even understand why this Objective-C++ file is here and what it contains. The Bridging-Header-File with the prototypes of the methods of the lib that I want to use within my Swift code (I don't like this but if it's the only way.). Here is some screenshots of the sample project with what I understand and what I don't : Superpowered gives us a sample app to show how to mix Objective-C++ and use their lib within a Swift project (Here's a link to the git if you want ). h files path in Xcode > Target > Build Settings > Search Paths > Library Search Paths.īut with that I have the error "ld: symbol(s) not found for architecture arm64"Įxactly the same as here XCode: Undefined symbols for architecture arm64 error and I tried all the solutions that I found on the web for that, still no way to compile. a in "Linked Frameworks and Libraries" in Xcode > Target > General (and so in Xcode > Target > Build phases > "Link Binary With Libraries" too) and index the. a and headers files in my project (Xcode create for me a bridging header file), add the. I want to make an app in Swift that simply record via the mic of the iPhone and then play the sound recorded.įor that, I'd like to use the lib Superpowered that is a static library with header files.įor that, I tried to drag and drop the.
0 Comments
Leave a Reply. |