[aspectc-user] __declspec issues

Daniel Lohmann daniel.lohmann at informatik.uni-erlangen.de
Thu Aug 19 15:03:24 CEST 2004


John Hawkins wrote:

>
>
>Yep, that's the code alright :-((
>
>This is going to scupper the Axis C++ projects use of AspectC++ in that
>case (very sad :-(
>
>If I create  bug report what's the next step -  are you guys working on
>this stuff permanently, would you ignore this because it's a v 6.0 issue
>(don't know if it's a v7 issue)?
>  
>

John,

As the weaver is complaining about the line, I doubt that this is a VC6 
specific issue.

RPC_ENTRY is defined as __stdcall, RPC_STATUS as long and IN/OUT are 
just for documentation purposes and defined as nothing, so the line

typedef RPC_STATUS RPC_ENTRY
RPC_IF_CALLBACK_FN (
     IN RPC_IF_HANDLE  InterfaceUuid,
     IN void *Context
     ) ;

expands to

typedef long __stdcall
RPC_IF_CALLBACK_FN (
      RPC_IF_HANDLE  InterfaceUuid,
      void *Context
     ) ;


which should not result in any weaving problems.
I was not able to reproduce your problem, regardless of using the free 
or commercial edition, VC6 headers or newer ones from the PlatformSDK.
I tried the following test application and did not encounter any problems:

// main.cpp
#include <stdio.h>
#include <windows.h>
#include <rpcdce.h>
int main() {

    printf( "Hello from main!\n" );
    return 0;
}

// aspect.ah
#include <stdio.h>
aspect Hello {
    advice execution( "% main(...)" ) : before() {
        printf( "Hello from Aspect :-)\n" );
    }
};

This all makes me believe that the real problem is somewhere else and 
for some reason not detected/reported earlier during the weaving process.
Maybe you can track down the thing to a smaller test app so we can 
reproduce it?

Regards

Daniel



>Does the corresponding source code look like this?
>
>
>typedef RPC_STATUS RPC_ENTRY
>RPC_IF_CALLBACK_FN (
>     IN RPC_IF_HANDLE  InterfaceUuid,
>     IN void *Context
>     ) ;
>
>
>If so, I also can't say what's going wrong. It can only be that
>RPC_STATUS and RPC_ENTRY resolve to nothing (which is a syntax error in
>C++) or IN resolves to something MS specific that our parser doesn't
>understand.
>
>
>Matthias
>
>--
>Matthias Urban                          Phone: +49-391-544569-32
>pure-systems GmbH                       Fax:   +49-391-544569-90
>
>
>
>_______________________________________________
>aspectc-user mailing list
>aspectc-user at aspectc.org
>http://www.aspectc.org/mailman/listinfo/aspectc-user
>  
>
>




More information about the aspectc-user mailing list