-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Win: Missing DLLs in dynamic build #33
Comments
Some of this is actually expected. Certain libraries only have static build configurations (like porttime) and others wouldn't link with Mixxx if built dynamically, so the "Dynamic" flag simply builds what it can dynamically as opposed to everything. As for taglib not producing anything, that's unexpected. |
It's also possible some of the batch files are not correctly reading the flag. :) |
@Pegasus-RPG Ah, that explains a lot :-) Still though, many of the batch files of the (!) annotated libs expect a DLL, in the sense that there is a |
I think that's the case with taglib. I made a small tweak, which solves the problem for me: |
... I have a vague memory of doing that by default, instead of only copying if we know it was going to produce a DLL. |
@Pegasus-RPG My bad! Taglib does produce something. The list is updated. |
Hmm.. I just rebuilt all dependencies from scratch with Here's the full log: https://pastebin.com/DxdJUsVD
|
The __declspec dllimport stuff usually means a dynamic library is trying to be linked statically or vice-versa, I forget exactly. (If you built dynamic dependencies, are you also building Mixxx dynamically?) Otherwise, troubleshooting this takes a lot of trial and error. |
Oh, that output may just be for mixxx-test.exe. Do you see mixxx.exe in the build folder? |
When building Mixxx I set both
There's no |
Oh and I also tried to build just mixxx.exe by setting
Full log: https://pastebin.com/sFC14Ryk |
It looks like these functions:
are defined in the Windows libraries @rryan is that correct? Shouldn't these libs be always added, both for |
It looks like the Scons script needs to be adjusted to add those as dependencies for Portaudio as well. |
I could take this up, if that's useful? As soon as everything's working I could do two PRs, one for the buildserver and one for Mixxx. |
Sure, if you're willing, that would save us a bunch of time. FYI, we found that adding advapi32 and user32 are only needed for static builds. There are already sections in our Scons scripts for each dependency where there's an if static block that adds whatever extra libraries are needed for that particular library to the linker list, so you should just need to extend that. (What's strange is that you shouldn't need to do that for a dynamic build, so again I wonder if flags are being passed correctly.) If you're switching flags, you may need to delete your .sconsign.dblite and .sconf.temp files to clear Scons' configuration and start fresh. (It's possible previous flags are still hanging around.) |
Ok I made some progress. I got Mixxx to compile in dynamic mode, but it crashes on startup (also with the ProtobufThe buildserver only builds the protobuf library in static mode but yet We can solve this by either building both static and dynamic versions of protobuf or by removing the preprocessor definition from the scons script. PortaudioThe buildserver only builds the portaudio library in static mode but yet Also, portaudio needs both advapi32 and user32, but yet the portaudio dependence block only adds advapi32. In We can solve this by either building both static and dynamic versions of portaudio or by always doing the RubberbandThis is a sneaky one. Rubberband depends on fftw, just like chromaprint. However, we only check for fftw in the chromaprint dependence block. Rubberband does not complain because fftw is already added here. The thing, though, is that chromaprint only adds fftw if What I didI did three things to solve these problems and get Mixxx to compile.
Mixxx crashes on startup (progress bar hangs at about 30%). It looks like there are problems loading
Edit 1 It freezes during the call to Edit 2 I tested it both in |
It looks like the Windows buildserver is not working properly for dynamic builds. Various dependencies are built in static mode, even though
build_environment.bat
is given theDynamic
argument. This results in unmet dependencies when compiling Mixxx.This is my
build.bat
script for Mixxx: https://pastebin.com/cd1bctuXAnd this is the output: https://pastebin.com/RABLSfCY
I ran
build_environment.bat x64 ReleaseFastbuild Dynamic
, which fails to build dynamic libraries for:For completeness, these are the output files in
buildserver/lib
per dependency.The text was updated successfully, but these errors were encountered: