I have built ffmpeg v3.2.4 shared libraries (dll) in windows 8.1, core i-7, using mingw-64 and msys2.
The reason was to update my old libraries that were used in my project.
The build was OK.
Also, my application has successfully linked with those dll's.
However, when I am running my app, I got a message program can't start because libiconv-2.dll is missing in your computer. I overcome this issue by adding --disable-iconv switch in configure before running make to build the ffmpeg libs from sources.
Then I got the same message with zlib dll missing. Then added --disable-zlib switch.
But then, I got libbz2-1.dll is missing when running the app. I don't know how to solve the last one, but, what am I missing here? Why didn't I need all these dll file in the old ffmpeg version (0.7.17) and now I do (latest ffmpeg (checked out tag n3.2.4)) ??
Thanks for the answers,
Aviv
Related
I have created a MAC application with libraries 'libmysqlclient.a' and 'libmysqlclient.18.dylib' with Objective-C language in Xcode 6.3.1 in OSX Yosemite 10.10.3. Its working fine when running through Xcode. And I also archived the .app file to install the app in my MAC, its also working fine. But when i tried to install it in another mac, app crashed and shows the message
"dyld: Library not loaded: libmysqlclient.18.dylib Referenced from: /Users/developer/Documents/UntitledFolder/UserName/SampleApp.app/Contents/MacOS/SampleApp Reason: image not found".
From this message i understand that the particular MAC does not have “libmysqlclient.18.dylib”. So, here my question is "Is it mandatory that each MAC should have the library to install and run the application?". Can anyone give me the solution for this with detailed format of creating the .app file and installing it in other MAC systems.
Thanks in Advance.
You have included both a static (.a) and a dynamic (.dylib) library with your app. that do the same thing. A static library compiles into your program, making it larger. A dynamic library ships with your app. or is already install on your target system. If you ship it with your app., it should be in the Frameworks folder of your app. (you create this folder in Build Phases, Copy File). Use install_name_tool -id to set the library install name to #executable_path\..\Frameworks and also in Build Settings, set Runpath Search Paths to the same.
i'm developer of AudioCuesheetEditor, an application for editing audio cuesheets. The new Version should be able to play back sound, so I would like to use gstreamer as backend. I investigated a bit in gstreamer and found out, that I need to use version 1.x with gstreamer-sharp 0.99.x binding. No problem, downloaded gstreamer-sharp 0.99.0, opened the solution with monodevelop (on linux) or xamarin (on windows) and tried to build the dll, but that didn't work. I get the error "namespace Gst.GLib" not found.
I'm developing with xamarin/monodevelop and need to have a portable app (working with mono/.net).
Can anyone help me, get gstreamer-sharp build?
Thanks in advance!
gstreamer-sharp is currently not supported on Windows, however you can compile the managed parts on linux and compile the glue on Windows using Visual Studio:
Install gtk-sharp 3.0 from https://github.com/mono/gtk-sharp
Compile gstreamer-sharp using ./autogen.sh && make
Take the compiled glib-sharp and gstreamer-sharp binary and all .c files from sources/glue/
Download and install gstreamer binaries from http://gstreamer.freedesktop.org/data/pkg/windows/1.2.2/ and install the development and binary packages for the architecture you want to compile for. You can use gstreamer 1.0 or 1.2.
Use the Visual Studio template from the gstreamer-devel package and change the project type to library. Add the c files taken from the sources/glue folder and compile the glue library. The library should be called libgstreamersharpglue-1.0.0.dll
Put the managed parts together with the native symbols.
EDIT:
Compiling the glue is now easier on Windows! Someone set up a project which can compile the glue using Visual Studio on Windows. I have a fork which has binaries at https://github.com/xDarkice/libgstreamersharpglue
gstreamer-sharp uses autotools for its build system, you cannot build it with an IDE. Please do the autotools dance:
./autogen.sh --prefix=/the/prefix/where/you/want/to/install
make
sudo make install
I was asked a question, what will happen when a framework is accidentally deleted from your device may be iphone or mac?
Whether your application crash or it will work without any error?
Please provide me answer with explainations.
You may get linking error. If framework folder is inside the application means its runtime linking.
OS X embeds an "install name" inside each dynamic library. This
install name is the path to where the library can be found when dyld
needs to load it. When you build an application that links against a
dynamic library, this install name is copied into the application
binary. When the application runs, the copied install name is then
used to locate the library or framework.
$ otool -D /Applications/Google\ Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python
/Applications/Google Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python:
#executable_path/../Frameworks/Python.framework/Versions/2.6/Python
so if you will delete Frameworks folder you will get Dyld Error.
Dyld Error Message:
Library not loaded: #loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle
Referenced from: /Applications/Transmission.app/Contents/MacOS/Transmission
Reason: image not found
If a framework is deleted, only software linking to that framework would be affected.
If it is a system framework, expect your system to start failing.
If it is a 3rd party framework, it should be limited in scope of impact.
If it is in your app bundle, and your app is code-signed, the removal of the bundled framework should prevent your app from launching.
It depends on if the application needs access to the framework you have removed.
If you application requires the framework then it will not compile.
If you dont need it, it will just compile like normal.
I have a qt application which was in qt4.7 and I ported it to qt5.0. It is working fine if it is run from a PC where qt5 is installed. But it is not running or not even giving any error message if it is run from a pc where qt is not installed even though it has all the dlls in the same folder.
But if I install qt and try from the same folder the application will work without even setting the environment variable. In some questions i have seen people replied about adding the dlls and i have tried adding all the dlls specified by them. But nothing helped. Any body has an idea how to handle this.
Qt 5 introduced the use of some DLLs that are loaded at run-time (as opposed to launch-time). These DLLs can only be detected by Dependency Walker if you use the "profiling" feature, which is not on by default.
I'm assuming that you're using the precompiled package from the Qt Project website. The community found a silent dependency on libEGL.dll, and a less-silent dependency on qwindows.dll, which must be placed relative to your .exe with this folder structure:
app.exe
libEGL.dll
platforms\qwindows.dll
Also, see if you can find anything useful at http://doc-snapshot.qt-project.org/qt5-stable/qtdoc/deployment-windows.html
There is a bug report on bugreports.qt-project.org. It can help.
Installed FreeImage through MacPorts. Everything looked to be OK, but when I builded my app and tried to launch on other computer where is no MacPorts and no FreeImage installed it says
dyld: Library not loaded: /opt/local/lib/libfreeimage.3.dylib
Referenced from: /Users/development/Library/Developer/Xcode/DerivedData/freeimage-dxsornyaxqlkyubqwsrlkgszvxhy/Build/Products/Debug/freeimage.app/Contents/MacOS/freeimage
Reason: image not found
Shouldn't it copy library files together with my project? I added them to my project's build phases "Copy files" list. They are being copied to my app's bundle. But when I try to link them, I get same error. I don't know why but app is still looking for library in /opt/local/lib. How can I fix it so that I could use FreeImage at my project and run it at any computer?
When you install through MacPorts the library is installed in /opt/local/lib, not in your project path. Even if you copy the whole project, the *dylib libraries won't be copied because they are usually in /opt/local/lib.
I believe you have two options here: install FreeImage in every computer that you want to run your application, or copy the libfreeimage.3.dylib to the same folder where your binnary is and, if both systems are similar, that should work. If the two computers are different in terms of operating system version, hardware architecture, etc... then probably the .dylib that you have won't be compatible for the other computer.
Another thing you might want to consider is to modify your DYLD_LIBRARY_PATH variable, which specifies the paths in which the OS will look for libraries when linking. See this answer for more information.