Shared-секции и .NET

Тема в разделе "WASM.WIN32", создана пользователем deLight, 18 дек 2008.

  1. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    < Abstract >
    Имеется С# приложение и С++ кодес, который получает из последнего параметры.
    Решил сделать через shared-секцию в общей DLL, которую будет импортировать и тот и другой код:
    Код (Text):
    1. // shrd.dll
    2. #pragma data_seg("Shared")
    3. volatile BOOL   g_Once  = FALSE;
    4. #pragma data_seg()
    5.  
    6. __declspec(allocate("Shared")) volatile BOOL fvars[FVAR_NUM];
    7. #pragma comment(linker, "/SECTION:Shared,RWS")
    код в C#-приложении...
    Код (Text):
    1. unsafe class ShrdMethods
    2. {   [DllImport("shrd.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    3.      public static extern int GetVariable(int varnum);
    4. ...
    и обычный C-код с LoadLibrary/GetProcAddress.

    < Problem >
    Обычный C-код (как и любое другое non-managed приложение, если податтачить туда руками общую либу) после загрузки shrd.dll видит эту секцию. C#-код, который загружает себе shrd.dll имеет )) ее изолированно, т.е. shared-секция не разделяется. Самое интересное, что на одной системе это так, на другой (не могу представить какие должны быть отличия, возможно разные версии framework-a? Oo) всё прекрасно работает, т.е. как C#, так и C код прекрасно видят общие данные.

    что не так? если проблема нерешаема, как еще грамотно разделить данные в памяти, чтобы этой проблемы не было?
    thx.
     
  2. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    84 просмотрa и ответа нет...
    все даосы крепко спят?? %))