Here are some of my findings based on looking through the code which of course I may be mistaken about.
In the source download "ports" directory I think mpg123.h includes mpg123.h.in which correctly defines ssize_t (but it defines it as long). The problem with your binary build is that you are using the wrong mpg123.h.
There is also no .lib file. I had to generate one using lib.exe but it does not link correctly. I fear that in your build you are not setting __declspec(dllexport). There appears to be no documentation in this library that states LINK_MPG123_DLL should be defined. I think again this is related to mpg123.h being incorrect.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
What are you talking about? mpg123.h is generated from mpg123.h.in. You are right there is no .lib file, that is because I don't use MSVC.
As for dllexport, if you read the comments slightly above, you'll notice "These aren't actually in use... seems to work without using libtool". The linker does auto-resolve the dll stubs, so LINK_MPG123_DLL is not exactly important either.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think if you test your releases in visual studio you will see what I mean. I understand how annoying it is to test like that as I have to do it myself releasing for multiple platforms. But I think it will help a lot because I'm sure you'll easily be able to fix the problem.
Attachment is a bare bones example with the error at the bottom.
I think I found your issue. Looks like there was a misunderstanding. The mpg123.h in the zips are machine generated for mingw*, MSVC support for C is substandard, so it gets a special "ports" version instead. Use the ones in ports instead, eg:
cl -c main.cpp -I ports\MSVC++ -I src\libmpg123
As for import library, generate it with lib.exe from the included .def file, you can try the .dll.a import library, but no guarantees it'll work for MSVC.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It is __int64 on win64 and int on win32.
OK.
Here are some of my findings based on looking through the code which of course I may be mistaken about.
In the source download "ports" directory I think mpg123.h includes mpg123.h.in which correctly defines ssize_t (but it defines it as long). The problem with your binary build is that you are using the wrong mpg123.h.
There is also no .lib file. I had to generate one using lib.exe but it does not link correctly. I fear that in your build you are not setting __declspec(dllexport). There appears to be no documentation in this library that states LINK_MPG123_DLL should be defined. I think again this is related to mpg123.h being incorrect.
What are you talking about? mpg123.h is generated from mpg123.h.in. You are right there is no .lib file, that is because I don't use MSVC.
As for dllexport, if you read the comments slightly above, you'll notice "These aren't actually in use... seems to work without using libtool". The linker does auto-resolve the dll stubs, so LINK_MPG123_DLL is not exactly important either.
Forgot to mention "long" is default because LP64 are more common, afaik, only Windows is LLP64. The MSVC ports may have gotten a bit out of sync.
I think if you test your releases in visual studio you will see what I mean. I understand how annoying it is to test like that as I have to do it myself releasing for multiple platforms. But I think it will help a lot because I'm sure you'll easily be able to fix the problem.
Attachment is a bare bones example with the error at the bottom.
Last edit: John Chambers 2012-12-28
I think I found your issue. Looks like there was a misunderstanding. The mpg123.h in the zips are machine generated for mingw*, MSVC support for C is substandard, so it gets a special "ports" version instead. Use the ones in ports instead, eg:
cl -c main.cpp -I ports\MSVC++ -I src\libmpg123
As for import library, generate it with lib.exe from the included .def file, you can try the .dll.a import library, but no guarantees it'll work for MSVC.