-
Notifications
You must be signed in to change notification settings - Fork 164
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
VST3 Compiler Errors w64 mingw32 #8
Comments
Hi can you check in "pluginterfaces/base/fplatform.h" if the SMTG_CPP11 is defined ? |
SMTG_CPP11 does get defined when I compile, yes. |
can you try to change this in fstrdef.h #define SMTG_CPP11_CAT_PRIVATE_DONT_USE(a,b) a ## b |
Sorry for the delay on this: doing this...
.... gives me these errors ...
Wish I were more experienced with MSVC and MINGW to offer help here. |
@mfisher31 regarding your last post: I got the same error messages. Here's a crude fix:
do
The wide string functions like With MSVC, It would be great if the VST3 SDK would compile cleanly with MinGW! |
@Spacechild1 - Thanks for that. Will try this soon! |
BTW, I also get a compiler error when trying to compile @ygrabit The situation is a bit frustating. Although the pluginterfaces headers work, many implementation files don't compile on MinGW. Adding MinGW support is not a big deal, it's just little fixes. This issue has been opened over 1 1/2 years ago... If nobody at Steinberg is willing to work on this, I can offer to make a PR. |
Hey, thanks @Spacechild1 for the EDIT: I will do this in MSVC instead. No use fixing these errors. Shame on Steinberg for such a bad and poorly documented API ("industry-standard")? |
Actually, it's possible to only use the headers in
VST2 became a de facto industry standard because it was a good API - at least for that time - and many vendors picked it up. VST3 never had much support from third party vendors from the beginning, but Steinberg thought they could just go ahead and make it the new "standard". it doesn't work that way! |
@demberto write me an e-mail if you need more information. I can send you a link to my repo. (My e-mail is in my profile.) |
Thanks @Spacechild1. Does your fix work on 64-bit MinGW i.e. |
I have made a fork of all the libraries and patched them to work fine in both MSVC and MINGW on Windows 10. |
Let´s give a try for the next update...we have fix some MinGW errors... |
how is that even supposed to work ? vtables generated by MSVC and GCC aren't compatible (or if they are, it's only by chance). |
The VST3 SDK uses a COM-like object model, where C++ interfaces have to follow a couple of rules:
MinGW has been COM compatible for years now and this isn't going to change. After all, it would be stupid for a Windows C++ compiler not to respect COM... |
is it an official stance of GCC or just by chance because COM is very simple ? I can't find anything stating it - some googling refers to bugs open since 2014 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64384) which look like they could break these cases for instance. |
No, but as I wrote, gcc/clang moved towards COM compatibility and I don't think they will break it again.
This is about returning an aggregate in 64-bit Windows uses a single calling convention, so In practice, I have hosted VST3 plugins (compiled with MSVC) in MinGW hosts (both 32-bit and 64-bit) for a while now and never ran into troubles. |
okay, I'll sleep a little better :) |
Getting this when compiling with a mingw-w64:
Compiler:
$ i686-w64-mingw32-g++ --version i686-w64-mingw32-g++ (GCC) 7.3.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Errors
../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp: In member function ‘bool Steinberg::ConstString::scanFloat(double&, Steinberg::uint32, bool) const’: ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1555:44: error: call of overloaded ‘findNext(Steinberg::uint32&, wchar_t)’ is ambiguous if ((pos = str.findNext (offset, STR(','))) >= 0 && ((uint32)pos) >= offset) ^ ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1022:7: note: candidate: Steinberg::int32 Steinberg::ConstString::findNext(Steinberg::int32, Steinberg::char8, Steinberg::ConstString::CompareMode, Steinberg::int32) const int32 ConstString::findNext (int32 startIndex, char8 c, CompareMode mode, int32 endIndex) const ^~~~~~~~~~~ ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1062:7: note: candidate: Steinberg::int32 Steinberg::ConstString::findNext(Steinberg::int32, Steinberg::char16, Steinberg::ConstString::CompareMode, Steinberg::int32) const int32 ConstString::findNext (int32 startIndex, char16 c, CompareMode mode, int32 endIndex) const ^~~~~~~~~~~ ../../../../SDKs/VST_SDK/VST3_SDK/base/source/fstring.cpp:1556:30: error: call of overloaded ‘setChar(Steinberg::int32&, wchar_t)’ is ambiguous str.setChar (pos, STR('.'));
The text was updated successfully, but these errors were encountered: