I am new to Xcode and want to add and use framework which I have taken from internet but
when I add it to my products folder by right clicking on products and using add new files it
runs fine and when i use my project's project.app file on my mac or on any other mac it
gives me dyld error that the bundle image not find. And when I use bundle image in my
framework folder its give me ld error that bundle not found help please.
ld: framework not found SMS-Bundled
Command /Developer/usr/bin/clang failed with exit code 1
*updated
when i add my framework to framework folder now its giving me error at run time...
dyld: Library not loaded: #executable_path/../Frameworks/SMS-Bundled.framework/Versions/A/SMS-Bundled
Referenced from: /Users/usman/Library/Developer/Xcode/DerivedData/Serial_Tools-detoutxzbnjrngcuulrbgcasxmjs/Build/Products/Debug/Serial Tools.app/Contents/MacOS/Serial Tools
Reason: image not found
(In Finder)
Go to the folder where your custom framework is. copy the framework. Now go to your project's folder. Create a new folder called Frameworks, paste the custom framework inside this folder.
(In Xcode)
Drag the custom folder FROM finder to the Frameworks folder on the project explorer (where all the rest of the frameworks are)
Now select your project, go to Build Settings, scroll down to "Framework Search Paths" field, double click the value to open it, press the + to add a new path, write ./Frameworks as the new path.
From now on if you want to add other private/custom frameworks all you have to do is copy them into the created frameworks folder, and simply drag and drop it into the xcode frameworks folder. (You must drag it from the project framework folder in finder to the framework folder in xcode).
PD: You don't necessarily have to name this folder frameworks, it can be whatever, just make sure to change the Framework Search Paths accordingly.
In your project build setting, under "framework search paths" mention the path of the framework.
This will resolve your issue.
Related
I get the following error when trying to embed a private framework into a Swift OS X app:
dyld: Library not loaded: #rpath/CustomCalcs.framework/Versions/A/CustomCalcs
Referenced from: /Users/sam/Library/Developer/Xcode/DerivedData/TestFramework-ckcpduuqyfclssceomyzqbxgbjdi/Build/Products/Debug/TestFramework.app/Contents/MacOS/TestFramework
Reason: image not found
I am trying to simulate the scenario where I am the receiver of a .framework file from a 3rd party and don't have access to the source code or Xcode project file (even though in my simple test of course I do)
Steps I have taken:
1. Add file to my target project making sure to copy it into the project
2. The Xcode syntax highlighting/completion then becomes aware of the classes within the framework - this is good
3. I add a "copy file" step in the Xcode "build phase". I have added it to "frameworks"
4. When examining the directory that the app runs from within DerivedData, I can find no framework directory and no .framework file
5. When I run the app the error above occurs
It would appear that I need to setup a step whereby the .framework file is copied into a deployment directory AND somehow the app knows to look in this location. How specifically do I go about doing this in Xcode?
I may be wrong but is seems like a case of "Linked Frameworks and Libraries" vs "Embedded Binaries".
Click on your project Workspace
Select your project Target
In the General tab, remove the Framework from "Linked Frameworks and Libraries"
Add it to "Embedded Binaries"
Build
It will be automatically added to the "Linked Frameworks and Libraries" also but you'll have it once instead of two times.
I am trying to make a camera/photo app that will add a filter on an image. I have heard of Brad Larson's GPUImage and so I downloaded it and tried to manipulate it to be more familiar with the code.
Now, I made a new project in Xcode and added it on my frameworks, but i don't have any idea how to use it on a new project.
How can I properly use GPUImage in my new project?
I don't know how I could be much clearer than the step-by-step instructions I put on the very first page of the GitHub project and in the README.md under the section "Adding the framework to your iOS project":
Once you have the latest source code for the framework, it's fairly
straightforward to add it to your application. Start by dragging the
GPUImage.xcodeproj file into your application's Xcode project to embed
the framework in your project. Next, go to your application's target
and add GPUImage as a Target Dependency. Finally, you'll want to drag
the libGPUImage.a library from the GPUImage framework's Products
folder to the Link Binary With Libraries build phase in your
application's target.
GPUImage needs a few other frameworks to be linked into your
application, so you'll need to add the following as linked libraries
in your application target:
CoreMedia
CoreVideo
OpenGLES
AVFoundation
QuartzCore
You'll also need to find the framework headers, so within your
project's build settings set the Header Search Paths to the relative
path from your application to the framework/ subdirectory within the
GPUImage source directory. Make this header search path recursive.
To use the GPUImage classes within your application, simply include
the core framework header using the following:
#import "GPUImage.h"
As a note: if you run into the error "Unknown class GPUImageView in
Interface Builder" or the like when trying to build an interface with
Interface Builder, you may need to add -ObjC to your Other Linker
Flags in your project's build settings.
Also, if you need to deploy this to iOS 4.x, it appears that the
current version of Xcode (4.3) requires that you weak-link the Core
Video framework in your final application or you see crashes with the
message "Symbol not found: _CVOpenGLESTextureCacheCreate" when you
create an archive for upload to the App Store or for ad hoc
distribution. To do this, go to your project's Build Phases tab,
expand the Link Binary With Libraries group, and find
CoreVideo.framework in the list. Change the setting for it in the far
right of the list from Required to Optional.
Additionally, this is an ARC-enabled framework, so if you want to use
this within a manual reference counted application targeting iOS 4.x,
you'll need to add -fobjc-arc to your Other Linker Flags as well.
To see this in action, look at any of the many sample applications I ship with the framework.
Please read this page http://www.sunsetlakesoftware.com/2012/02/12/introducing-gpuimage-framework and this: https://github.com/BradLarson/GPUImage
Note: Simply, you can copy all source code files in framework/source folder to your project, and import GPUImage.h to use.
Regards!
Here's how to do it in Swift 5 in Xcode for iOS with Visual Directions:
Two things before you begin.
you should start this process on a copy/duplicate of your project until you get it correct (it took me several tries), or even start with a new project. If something goes wrong you want to keep your original project intact
if you have a project open with the GPUImage in it that you are trying to copy, make sure to close it first. You will get an error saying that there is a project with it already open
1- go to the GPUImage gitHub page
2- in the upper right hand corner, click the green Code button and then click Download Zip
3- in your current Xcode project (the one that you want to use GPUImage) click the first folder underneath the blue project icon
4- after that go to the top of Xcode and click File > Add Files to "yourProject"
5- when the new window appears go to Downloads (or wherever you downloaded GPUImage in the second step) > GPUImage3-master > framework > GPUImage.xcodeproj and then click Add. It's important that you make sure Copy Items if Needed and Create groups are checked.
6- you will now see GPUImage.xcodeproj inside your Xcode project underneath that same folder from step 3 (no need to do anything with it)
7- click your main project's blue project icon > Build Phases and the middle/center pane should be on TARGETS. Make sure you DON'T click the GPUImage.xcodeproj, that is the WRONG folder
8- while still under Build Phases click Dependencies then click the plus sign
9- when the pop up appears select GPUImage_iOS then select Add (make you sure you pick the iOS version and not the macOS version)
10- you will now see the GPUImage_iOS dependency under Dependencies (no need to do anything here)
11 -now while still under under Build Phases click Link Binary with Libraries then click the plus sign
12- when the pop up appears under Workspace > GPUImage > select GPUImage.framework from 'GPUImage_iOS' target ... then press Add (make sure you select the iOS version and not the macOS version)
13- now the library is linked (no need to do anything here)
14(a)- This is important, if underneath Build Phases there isn't a Copy Files folder than go to the top of Xcode and select Editor > Add Build Phase > Add Copy Files Build Phase. If the folder is already there I'm not sure what to do if the folder already exists. The Copy Files folder wasn’t initially there for me and I had create it using step 14(b). I would assume if it’s already there just open it and continue to step 16
14(b)- if for some reason Add Copy Files Build Phase is grayed out, do this or under Build Phases, in the upper left hand corner press the plus sign, then select New Copy Files Phase
15- now you will see a brand new Copy Files directory underneath Build Phases
16- if Copy Files isn't already open, press the toggle button to open it and next to Destination change Resources to Framework
17- while still under Copy Files, press the plus sign, when the pop up appears, if this is an iOS project, under Products, select the top GPUImage.framework and press Add. This last step is under Brad's directions
Add a new Copy Files build phase, set its destination to Frameworks,
and add the upper GPUImage.framework (for iOS) or lower
GPUImage.framework (for Mac) to that
18- now the GPUImage.framework has just been added to Copy Files
19- your Build Phase screen should look like this
20- clean the project Shift+Command+K
21- in whatever file you intend on using the GPUImage in go to the top and enter import GPUImage (it should start to appear under autocomplete) then build your project.
22- test to see if a Class and a Method from GPUImage works inside your project
// nothing is supposed to actually happen here, just test to see if the SmoothToonFilter() class and filterWithOperation() method are recognized without any errors
let testImage = UIImage(named:"some_image_from_your_assets")!
let toonFilter = SmoothToonFilter()
let _ = testImage.filterWithOperation(toonFilter)
Done!
Probably the simplest of all ways of integrating GPUImage into your project is via cocopods. And while the GPUImage CocoaPods repo isn't actually maintained by Brad, it's upkeep is pretty regular, and it makes integration a breeze.
> Go get it
I'm trying to add a custom 3rd party framework into my Xcode 4 project for a program I'm trying to write for Mac OSX. The framework is libircclient found here: http://www.ulduzsoft.com/libircclient/
I have opened the Xcode project that was in the project cocoa directory and compiled it. Then I tried to drag the IRCClient.framework from the Products into my Xcode application but when I try to compile it there (my app currently is empty, its a brand new project), I get the following error:
dyld: Library not loaded: #executable_path/../Frameworks/IRCClient.framework/Versions/A/IRCClient
Referenced from: /Users/Ray/Library/Developer/Xcode/DerivedData/IRC-cokndyzxhwruxqevwngcznzijjcm/Build/Products/Debug/IRC.app/Contents/MacOS/IRC
Reason: image not found
Am I adding the framework correctly? I also tried right clicking on the IRCClient.framework and copying the whole directory to my application then tried to add it in the build phases in my app. I get the same error. What am I doing wrong?
It seems you forgot one single step:
the 'copy files' build phase must be added to your target (Add buildphase)
Set the destination to 'Frameworks' and drop your framework. (I was unable to select it after clicking the add button)
I dragged skype fromwork into my frameworks folder and then imported <Skype/Skype.h>. When I run, it gives me this error:
dyld: Library not loaded: #executable_path/../Frameworks/Skype.framework/Versions/A/Skype
Referenced from: /Users/test/Library/Developer/Xcode/DerivedData/TEST-edktdfqvxhqmfpfqrdqrmjojnfly/Build/Products/Debug/TEST.app/Contents/MacOS/TEST
Reason: image not found
Try setting the "Library Search Path" build settings for your project.
In Xcode 4.x:
You need to drag the .framework from the Project navigator to the Copy Files build phase.
In Xcode 3.2.x:
Choose Project > New Build Phase > New Copy Files Build Phase
In the Destination drop down box select Frameworks
Close the Copy Files Phase Info window to return to the Xcode main window
In the Groups & Files pane expand Targets > YourApplicationExectuable, where you should now see a Copy Files entry
Still in Groups & Files pane drag your framework into the Copy Files entry
Recompile
If you don't do this, the framework will not be actually copied into your application bundle, so it will not be found when your app tries loading it into memory.
Just as a side note, I spent months trying to track down an answer to this problem, always seeing this answer but never being able to get it to work.
MY MISTAKE:
The "Copy Files" build phase is not shown by default. I was seeing the "Copy Bundle Resources" phase and wrongly assuming that was where I needed to list the framework.
At the bottom of the Build Phases pane click on Add Build Phase. "Copy Files" is listed there.
Doesn't work for me. I had to make a link to the framework in the ~/Library/Developer/..../Debug/../Frameworks for it to work.
I'm having some trouble to embed my application with the log4cocoa framework.I've embed frameworks in my application before with no trouble, but I cannot fix this one.
First of all, this is my system out:
dyld: Library not loaded: #loader_path/Frameworks/Log4Cocoa.framework/Versions/A/Log4Cocoa
Referenced from: /Users/leandro/Documents/Projects/MLoggerApplication/build/Debug/MLoggerApplication.app/Contents/MacOS/MLoggerApplication
Reason: image not found
Well, I think done all necessary steps to get a framework working fine including the copy files phase and changed the installation directory over the build options to #executable_path/../Frameworks .
I hope problem clear enough to receive your help.
Thanks in advance.
Looks like your framework isn't being copied into your target. If a framework isn't part of the system (ie, you have to distribute it with your app), you need to not only link your executable against the framework but to copy it into your app's ./Frameworks folder.
To do this, add a Copy Files build phase, select "Frameworks" as the build phase's destination, then drag the framework (from your Frameworks folder in your Xcode project) under that Copy Files build phase you just created. If you already have a Copy Files build phase for Frameworks, then just use it instead of creating a new one.
Firstly, i mean, Joshua Nozzi is completely right about how is to embed an app with a framework!
But log4cocoa as a little different and could only realize that because it is an opensource code able for download at http://sourceforge.net/projects/log4cocoa/.
The framework could be used with this configuration by adding a "Copy Files build phase, but instead "Frameworks", select "Products Directory" as the build phase's destination, then drag the framework to that "Copy Files build phase.
The difference among this, and the other frameworks relies in this build variable: installation directory.It has as default value: "/Frameworks .
This variable can be accessed by right clicking on the log4cocoa(first item in the targets list), then select "Get Info" and finally "build".
To use it as "normal" framework rebuild it after you have edited the "installation directory" value to "#executable_path/../Frameworks" or if you are going to embed a framework with it, you would prefer "#loader_path/../Frameworks"