All the libraries compile now but I get problems compiling 
applications.  I have traced it down to the usage of defines like   
OSG_SYSTEM_EXPIMP_TMPL  in OSGSystemDef.h.

Here is the rundown:

The code in OSGSystemDef.h look like:

#if defined(WIN32) && defined(OSG_BUILD_DLL)
#   ifdef OSG_COMPILESYSTEMLIB
#       define OSG_SYSTEM_DLLMAPPING  __declspec(dllexport)
#       define OSG_SYSTEM_EXPIMP_TMPL
#   else
#       define OSG_SYSTEM_DLLMAPPING  __declspec(dllimport)
#       define OSG_SYSTEM_EXPIMP_TMPL   extern
#   endif
#else
#define OSG_SYSTEM_DLLMAPPING
#endif

As you can see, when building a DLL OSG_SYSTEM_EXPIMP_TMPL is defined so 
either nothing or extern.

But with compiling an application, it doesn't get defined to anything.

This is a problem for code that uses it.  For example in 
OSGSceneFileHandler.h there is code like this:

#if defined(WIN32)
#    if !defined(OSG_COMPILE_SCENEFILEHANDLER)
OSG_SYSTEM_EXPIMP_TMPL
template class OSG_SYSTEM_DLLMAPPING SingletonHolder<SceneFileHandlerBase>;
#    endif
#endif

(note: the OSG_COMPILE_SCENEFILEHANDLER is defined only in 
OSGSceneFileHandler.cpp so the normal case is to include this line of 
code when including the header)

The compile horks on this because OSG_SYSTEM_EXPIMP_TMPL doesn't mean 
anything to it.  I am guessing that what we want is to have it defined 
as extern by default when we are on windows.  On a side note, I would 
also expect that on windows we would want to use dllimport by default as 
well, but maybe I am missing something.

I would expect the code to look more like:

#if defined(WIN32)                            //&& defined(OSG_BUILD_DLL)
#   ifdef OSG_COMPILESYSTEMLIB
#       define OSG_SYSTEM_DLLMAPPING  __declspec(dllexport)
#       define OSG_SYSTEM_EXPIMP_TMPL
#   else
#       define OSG_SYSTEM_DLLMAPPING  __declspec(dllimport)
#       define OSG_SYSTEM_EXPIMP_TMPL   extern
#   endif
#else
#define OSG_SYSTEM_DLLMAPPING
#define OSG_SYSTEM_EXPIMP_TMPL
#endif

But things work for the configure build, so what am I missing?

-Allen


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to