Hello,
I had some problems with VAX recognizing symbols before, but after I set up my computer new, the problems had temporarily gone. Now they are back. But this time I hope I can provide more information. I have the following:
ShapeBase.h
#pragma once
class ShapeBase {};
AreaShapeBase.h
#pragma once
#include "ShapeBase.h"
class AreaShapeBase : public ShapeBase {};
EllipseShape.h
#pragma once
#include "DataObjectsLib.h"
#include "AreaShapeBase.h"
class DATAOBJECTS_EXPORT EllipseShape : public AreaShapeBase {};
The class symbol EllipseShape is not recognized by VAX. (Find Reference ==> "Find Reference is not available because the symbol is unrecognized.")
The culprit is perhaps the macro DATAOBJECTS_EXPORT defined in DataObjectsLib.h:
#pragma once
#ifdef _LINUX
#define DATAOBJECTS_EXPORT __attribute((visibility("default")))
#else // Windows
#undef DATAOBJECTS_EXPORT
#ifdef DATAOBJECTS_LIB
#define DATAOBJECTS_EXPORT __declspec(dllexport)
#else
#define DATAOBJECTS_EXPORT __declspec(dllimport)
#endif
#endif
If I delete the Linux stuff and use the windows stuff only, EllipseShape is recognized and everything works fine. Unfortunatly, we need the Linux stuff. ;-)
More information:
- If I add the va_stdafx.h with a simple definition of the macro, it works with this simple example. But the real code is much more complex and with the real code the va_stdafx.h does not help.
- I have set the registry keys so that deep macro parsing is enabled.
- System: Win7 x64, VS2008 (Version 9.0.30729.4108), VAX 10.8.2043.0
I hopy this information is helpful.
Marc