teragonaudio / MrsWatson

A command-line VST plugin host
http://teragonaudio.com/MrsWatson.html
Other
486 stars 102 forks source link

Compilation errors with Visual Studio 14 2015 + FLAC #222

Closed mattetti closed 8 years ago

mattetti commented 8 years ago
#ifdef snprintf
    #error Macro definition of snprintf conflicts with Standard Library 
             function declaration
#endif

Probably similar problem then mentioned here: http://stackoverflow.com/questions/27754492/vs-2015-compiling-cocos2d-x-3-3-error-fatal-error-c1189-error-macro-definiti

JC-Morph commented 8 years ago

Hi

The offending definition is found in master/source/base/Types.h The following line must be removed:

#define snprintf _snprintf

Additionally I found that, at present, it is necessary to remove all references to showVst2xEditor that can be found in master/source/plugin/PluginVst2x.cpp

This is most likely because this feature has not been fully implemented yet.

I have already made a branch of the changes described above here.

Kind regards, JC

dts350z commented 8 years ago

When I compile the branch (visual studio 2015), ,described above, when loading a 32bit vst I get:

C:\Users\gnewell\Downloads\MrsWatson-buildfix-showVstEditor\build\main\Debug>mrswatson.exe -p Maxwell_Smart --parameter 2,0.875 -i "C:\Users\gnewell\Google Drive\01 Antissa-mch.wav" -o "C:\Users\gnewell\Google Drive\01 Antissa-mch-out .wav"

Notice that I am running the 32 bit mrswatson.exe

This didn't happen with the windows binary version 0.9.7, build 20140125

Am I doing something wrong?

dts350z commented 8 years ago

Also, even with internal plugins 0.98 compiled with VS 2015 doesn't work for 6ch. 16 bit wav files (which 0.97 binary did). Heap corruption:

C:\Users\Glenn\Google Drive\MrsWatson-master\build\main\Debug>mrswatson.exe -p mrs_passthru -i "C:\Users\Glenn\Google Drive\01 Antissa-mch.wav" -o "C:\Users\Glenn\Google Drive\01 Antissa-mch-out.wav"

Then crash with heap corruption.

Also, even though all the flac, etc. stuff is in there, it complains about 24 bit files (wav or flac).

dts350z commented 8 years ago

It would appear the snprintf are still present when building with audiofile.

dts350z commented 8 years ago

OK after hours of work I got flac and audiofile projects to compile without errors with Visual Studio 2015.

Now, however, the mrswatson project has 18 link errors, similar to this:

Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol __imp_FLACstream_decoder_process_until_end_of_metadata referenced in function "public: virtual enum status cdecl FLACFile::readInit(struct _AFfilesetup *)" (?readInit@FLACFile@@UEAA?AW4status@@PEAU_AFfilesetup@@@Z) mrswatson C:\Users\gnewell\Downloads\MrsWatson-buildfix-showVstEditor\build\main\audiofile.lib(FLACFile.obj) 1

and I'm stuck. Any ideas?

audofile and flac lib files are built and found in the project properties.

nikreiman commented 8 years ago

I just pushed a few fixes to master, I can now compile on VS 2015 without any warnings/errors both with and without audiofile. There are some issues building with flac support enabled, I'm guessing that the project needs to bump the submodule, and also probably to add C++11 support when building this lib. Anyways, without flac, I can run the test suite with no errors and no crashes, including the integration tests (which fork a separate mrswatson.exe instance). As such, I've edited the issue name to reflect that.

For me, the 24-bit AIFF/WAVE tests run fine. Are you still getting heap corruption with them @dts350z ?

dts350z commented 8 years ago

The problems I am having now are:

1) VS Studio 2015 makes 64 bit exes for both w64 and 32 bit projects (leading to "wrong architecture" with mrswatson and 32bit VSTs. I can get around this with a bunch of effort in visual studio but I would think you would want it to work out of the box.

2) The output file length does not equal the input file length, even for mrs_passthru plugin. Output file (6 ch) has 348 more samples than input file. These are 24 bit std wave files.

dts350z commented 8 years ago

flac and w64 support are also important

nikreiman commented 8 years ago

As of commit 59c2e95, MrsWatson now builds on Windows with FLAC enabled, for both 32/64-bit builds. Regarding the output file length with 24-bit wave files, I've moved your comments into #206, since these bugs are likely caused by the same issue.