-
Notifications
You must be signed in to change notification settings - Fork 272
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
exported symbols and dll builds #120
Comments
I don't use Windows. Maybe @lvqcl can help. |
I don't know much how MinGW or configure.ac work, so I cannot help here. Maybe it makes sense to add FLAC_API_EXPORTS to those functions from windows_unicode_filenames.c ? Or leave it as is (if it's not a problem)? |
Adding them to api or leaving it as is will be a problem when someone So no, I don't think either would be a good idea. |
One solution is going back to 1.3.0 way of doing it. I.e. move windows_unicode_filenames.c Line 86 in c7957b2
an then do changes similar to I described in the first post above. |
I think that hints at the most acceptable solution. |
OK, will start working on this and create a pull request. |
IIRC there were complaints that libFLAC wasn't compatible with UWP, so it was changed. |
What was the incompatibility? The calls used in the helpers (possibly) |
I have a patch working for autotools+mingw (tested by cross-compiling on linux). |
Also, I just built flac 1.3.0 with MinGW, and libFLAC-8.dll also exports some symbols that are not prefixed with FLAC, and some of them are necessary for flac/metaflac. For example, flac.exe 1.3.0 uses the following functions from libFLAC-8.dll:
|
I know. This has been a long-standing problem,. |
#32 and IIRC there were some others, but I can't find them quickly. |
So, the issue was only with the function calls used in there. |
For the record: flac.exe 1.3.3 needs these (internal and undocumented) functions from libFLAC-8.dll:
At least, they are now clearly marked as internal.
My point was that I can't see how "going back to 1.3.0 way of doing it" will solve this problem. |
See #122 |
We will not be going back to the way 1.3.0 did it. |
Closing this as #147 is merged. |
libFLAC.dll built by MSVC exports only the symbols marked as FLAC_API,
because FLAC_API is defined properly as FLAC_API_EXPORTS in export.h.
libFLAC.dll built by MinGW exports all of the symbols it has, because
FLAC_API_EXPORTS is restricted to MSVC in export.h: this is obviously
wrong.
As a test, I tried something like this:
But that doesn't work, because flac.exe and metaflac.exe unfathomably
rely on the private symbols of windows_unicode_filenames.c which only
go into the dll and wrongly exported. MSVC builds aren't affected by
this, because those exes are linked to static libFLAC and not to the
dll.
What is a good / acceptable solution for this?
The text was updated successfully, but these errors were encountered: