[LAD] VST SDK2.4 issue

victor Victor.Lazzarini at nuim.ie
Thu Aug 27 17:46:06 UTC 2009


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.

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 at gmail.com>
To: "Rui Nuno Capela" <rncbc at rncbc.org>
Cc: "Victor Lazzarini" <Victor.Lazzarini at nuim.ie>; 
<linux-audio-dev at 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 




More information about the Linux-audio-dev mailing list