yes, sorry I meant exactly that, but got it all mangled. Your solution
fixes the macro and is the ideal one. Then there should be no problems
as far as the calling convention is concerned. Sorry if I didn't make myself
clear.
Victor
----- Original Message -----
From: "Pedro Lopez-Cabanillas" <pedro.lopez.cabanillas(a)gmail.com>
To: "victor" <Victor.Lazzarini(a)nuim.ie>
Cc: "Rui Nuno Capela" <rncbc(a)rncbc.org>rg>;
<linux-audio-dev(a)lists.linuxaudio.org>
Sent: Thursday, August 27, 2009 7:13 PM
Subject: Re: [LAD] VST SDK2.4 issue
On Thursday, August 27, 2009, victor wrote:
But the silly thing I think is that the macro is
defined for __GNUC__
and it clearly does not work with it. If I undefine that token, it's
good.
I don't like the idea of touch the sdk headers; I thought really they
should work out of the box.
Rui's solution seems to be similar to mine (getting rid of __cdecl).
Whereas this one just fixes the macro to keep the calling convention as
it
is.
The code posted by Rui is defining __cdecl as a void symbol, just before
including the offending header. My proposal was defining __cdecl at the
same
place, but in a different way. Maybe this would be more clear:
#if defined(__GNUC__)
#define __cdecl __attribute__((cdecl))
#endif
#include <aeffectx.h>
[...]
I have not been able to test the plugin yet, perhaps I'll have a better
idea of what I should do then.
Victor
----- Original Message -----
From: "Pedro Lopez-Cabanillas" <pedro.lopez.cabanillas(a)gmail.com>
To: "Rui Nuno Capela" <rncbc(a)rncbc.org>
Cc: "Victor Lazzarini" <Victor.Lazzarini(a)nuim.ie>ie>;
<linux-audio-dev(a)lists.linuxaudio.org>
Sent: Thursday, August 27, 2009 5:28 PM
Subject: Re: [LAD] VST SDK2.4 issue
> On Thursday, August 27, 2009, Rui Nuno Capela wrote:
>> On Thu, August 27, 2009 15:58, Victor Lazzarini wrote:
>> > Hi everyone,
>> >
>> >
>> > perhaps one of you might have already seen this issue and will know
>> > what
>> > is the best solution.
>> >
>> > My problem is that one of the headers in the VST SDK2.4, aeffect.h,
>> > has a macro, VSTCALLBACK, which in gcc will be defined as __cdecl .
>> > This
>> > is not recognised by the compiler, thus preventing me from using
>> > that
>> > header (to build a plugin).
>> >
>> >
>> > My solution was to forcibly undefine __GNUC__ so that the macro
>> > gets a blank definition.
>> >
>> > However, I am not sure this is the best way out; I am wondering
>> > whether the calling convention will break the plugin, since the host
>> > might be expecting __cdecl and it will not be getting it.
>> >
>> > Perhaps someone else would have a different solution.
>>
>> on my qtractor stuff, i do something like this,
>>
>>
>> #if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
>> #define __cdecl
>> #endif
>>
>> #include <aeffectx.h>
>>
>> #if !defined(VST_2_3_EXTENSIONS)
>> #define VSTCALLBACK
>> #endif
>>
>>
>> it seems to get it just fine :)
>
> I'd tried this:
>
> #define __cdecl __attribute__((cdecl))
>
> Much like another typical MSVC keyword:
>
> #define __stdcall __attribute__((stdcall))
>
> If you want to compare the documentation of both compilers:
>
>
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
>
http://msdn.microsoft.com/en-us/library/984x0h58.aspx
>
> Regards,
> Pedro