Boost.Extension: muestra de herencia simple: ¿por qué no vemos animales en Linux?

Asiquetry para portar algunas muestras de Boost.Extension para linux.

La muestra se describeaqu. Aquí está mi puerto de código clases con animales, prototipo de animal, aplicación principal, generaltoda la idea del puerto se describe aquí yalgunos avances actuales de Linux aquí (¡algunas muestras realmente funcionan según sea necesario!)). Cuando compilo esta muestra en Linux, compila, encuentra la biblioteca con animales pero genera:

Animals not found!

Lo que sucederá soloif(factories.empty()).

Intento portar muestras de Extensión en la base de plataforma cruzada, así que probé el mismo código en Windows, ¡funciona de maravilla! encuentra todos los animales y salidas:

Creating an animal using factory:
Cougar factory Created an animal:
cougar Age: 2 Creating an animal using
factory: Leopard factory Created an
animal: leopard Age: 3 Creating an
animal using factory: Puma factory
Created an animal: puma Age: 4
Creating an animal using factory:
Wildcat factory Created an animal:
wildcat Age: 5

Entonces ... ¿Por qué se comporta así en Linux con el mismo código? ¿Por qué funciona tan bien en Windows?

Actualizar

Así que cómo construir estas cosas con premake:

Usted obtienesvn desde aquí (solo se requiere esta carpeta)Ustedget premake para su plataforma o compílelo desde la fuente y colóquelo en la carpeta que descargó de svn Debería tener un Boost oficial compilado e instalado (lea el archivo ReadMe.txt que proporcionamos en el directorio), así que lo que se necesita:Boost C ++ library's (probamos con la versión 1.4.16) Boost-Extension ( usamosúltima revisió, lo direccionamos como parte de boost 'boost / extension /**' Tuvimos que hacer algunos cambios (en realidad solo uno) para aumentar la extensión, así que lo proporcionamos dentro deBoost.Extension.Tutorial/libs/boost/extension/ carpeta, así que cuando descargaste svn lo obtuviste, es solo el encabezado ) Refuerzo-Reflexión (lo usamosporque este tutorial , usamosúltima revisió, lo direccionamos como parte del impulso 'impulso / reflexión /**' * y para simplificar, recomendamos simplemente ponerlo enBoost.Extension.Tutorial/libs/boost/reflection * ) Ahora, cuando Boost oficial está en su sistema, solo el encabezado Boost-reflection y Boost-extension están enBoost.Extension.Tutorial/libs/boost carpeta, el ejecutable premake4 está dentro deBoost.Extension.Tutorial/ carpeta simplemente podemos llamar aBoost.Extension.Tutorial/ premake4-build-windows.bat en Windows para obtener sln para Visual Studio oBoost.Extension.Tutorial/ premake-build.sh para obtener makefiles. Puede encontrar la solución / makefiles generados dentro de la carpeta de proyectos generados. ¡Buena suerte! =)

Actualización 2:

Archivos de proyectofor Windows y Linux ahora están en svn para que pueda obtener una creación de proyecto completa con premake, solo tenga Boost, nuestro svn y encabezados de reflexión solo lib.

Respuestas a la pregunta(2)

Su respuesta a la pregunta