njh / twolame

MPEG Audio Layer 2 (MP2) encoder
http://www.twolame.org/
GNU Lesser General Public License v2.1
59 stars 34 forks source link

Fix definition of TL_API under GCC #94

Open sebastinas opened 4 years ago

njh commented 4 years ago

@sebastinas thank you very much for this fix.

Do you know what I could have done to pick this up before releasing? Travis is configured to build against GCC 5.4.0 on Ubuntu: https://travis-ci.org/njh/twolame/jobs/598281337

And I have my own build job here: https://ci.aelius.com/job/twolame/95/console

Which runs on Debian 10, with GCC 8.3.0

Is there an extra test that I need to do?

sebastinas commented 4 years ago

What I did to find this issue is to check whether the .so only exports the functions defined in the public header (you can do that with nm -D and checking for the symbols marked with T). First, I noticed that too many symbols are exported. Then I've built with -fvisibility=hidden and ended up with no symbols. This uncovered the issue in the definition of TL_API. With that fixed, I noticed that one function was still missing.

lazka commented 4 years ago

We also needed this patch for the Windows build: https://github.com/msys2/MINGW-packages/pull/5919