2013-04-08 3 views
0

Мой собственный проект на C++. Я должен подключиться к платформе Android, основанный на нескольких статических и динамических библиотеках, используя на основе C++ 11 потоковые безопасные синглтоны, , которые совместно используются этими модулями.Native Singletons на платформе Android?

Вот пример моей фактической структуры:

brCore (Core elements, Manager (Singletons), Logger (Singleton) ect.) STATIC 
    brGrapics (Generic graphics) uses brCore STATIC 
    brOpenGLES (GLES renderer) uses brCore, brGraphics DYNAMIC 

Мой Android приложений (также DYNAMIC) использует эти три библиотеки и загружает brOpenGLES динамически при запуске. на Linux и Windows, платформы ничего работает нормально, но на андроид, у меня проблемы с Одиночки:

04-08 06:47:24.601: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 
04-08 06:47:24.611: I/NativeActivitySimpleExample(1059): Singleton constructor invoked : brFileHandler 
04-08 06:47:24.611: I/NativeActivitySimpleExample(1059): brFileHandler set internal data path: /data/data/com.binrev/files 
04-08 06:47:24.611: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 

04-08 06:47:24.031: I/NativeActivitySimpleExample(1059): Try to initialize Render API 
04-08 06:47:24.031: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 
04-08 06:47:24.051: I/NativeActivitySimpleExample(1059): Singleton constructor invoked : brRessourceManager 
04-08 06:47:24.051: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 

04-08 06:47:24.251: I/NativeActivitySimpleExample(1059): Try to init Logger: brCore 
04-08 06:47:24.251: I/NativeActivitySimpleExample(1059): Search for existing logger 
04-08 06:47:24.282: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 
04-08 06:47:24.282: I/NativeActivitySimpleExample(1059): Singleton constructor invoked : brRessourceManager 

04-08 06:47:24.282: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 
04-08 06:47:24.282: I/NativeActivitySimpleExample(1059): Singleton constructor invoked : brConfigManager 

04-08 06:47:24.601: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 
04-08 06:47:24.611: I/NativeActivitySimpleExample(1059): Singleton constructor invoked : brFileHandler 
04-08 06:47:24.611: I/NativeActivitySimpleExample(1059): brSingleton getInstance called 

Как вы можете видеть, конструктор из потокобезопасных одиночек называется несколько раз, что не должно быть , Значения, установленные на Singleton (внутренний путь данных BrFileHandler) , теряются в последующих точках. Похоже, библиотеки имеют отдельные экземпляры синглтонов и не могут делиться контентом между библиотечными границами ...

Как я могу решить эту проблему? Спасибо за любую помощь.

ответ

0

Проблема решена. Я должен использовать экземпляры динамической библиотеки для моих модулей.

Смежные вопросы