As currently built, libid3.so is linked using cc, not c++. Since ID3lib is C++ code, this leaves many undefined C++ symbols in the shared lib. Similarly, libz is not linked when building libid3.so, leaving those symbols undefined as well. The responsibility to link with c++ and libz now falls on the application using ID3lib. Since ID3lib is supposed to provide a C interface, having to link with c++ is not acceptable. Fix: # # o Use libtool 1.5 so that the shared lib is linked with c++ # not cc. # # o Using libtool 1.5 generates one more symlink for the shared # libs, add it to the plist. # # o Remove libtool 1.3 hacks from the configure script. # # o Patch configure script to link libz with libid3 so that # the responsibility does not fall on the application using # id3lib. # How-To-Repeat: Observe all the missing symbols with the following test. --- broke.c --- #include <id3.h> int main() { ID3Tag_New(); return 0; } --- end --- cc -I/usr/local/include -L/usr/local/lib broke.c -lid3
Dear maintainer! Please, take the PR into account. -- Sem.
State Changed From-To: open->closed Committed, thanks!