Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие с unmanaged code. Глюк??? Не могу записать значение переменной 
V
    Опции темы
ns4107
Дата 12.2.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



Есть код:
Код

         public unsafe struct buffer1
        {
            public static unsafe ushort* data1 = null;
            public static unsafe ulong* data2= null;
            public static ulong tm = 0;
        }
        [StructLayout(LayoutKind.Sequential)]
        public unsafe struct buffer2
        {
            public ushort* data1;
            public ulong* data2;
            public int retcode;
        }
        [DllImport("dll1.dll",EntryPoint="func1")]
        unsafe static extern buffer2 _func1();

        public static int func2()
        {
            buffer2 b = _func1();
            unsafe
            {
              
                buffer1.data =b.data;
                buffer1.sync = b.sync;
            }
            return b.retcode;
        }


После присваивания в buffer.b =0x000000, а b.data после вызова ф-ции= 0x3b94....?
Почему они не равны?



Это сообщение отредактировал(а) ns4107 - 13.2.2010, 11:29
PM MAIL   Вверх
ns4107
Дата 12.2.2010, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



Этот код работает правильно:
Код

        public unsafe class _buffer1
        {
            public _buffer1() { data1 = null; data2 = null; tm = 0; }
            public  unsafe ushort* data1;
            public  unsafe ulong* data2;
            public  ulong tm;
        }
        [StructLayout(LayoutKind.Sequential)]
        public unsafe struct buffer2
        {
            public ushort* data1;
            public ulong* data2;
            public int retcode;
        }

        public static _buffer1 buffer1 = new _buffer1();

        [DllImport("dll1.dll",EntryPoint="func1")]
        unsafe static extern buffer2 _func1();

        public static int func2()
        {
            buffer2 b = _func1();
            unsafe
            {
              
                buffer1.data =b.data;
                buffer1.sync = b.sync;
            }
            return b.retcode;
        }






Это сообщение отредактировал(а) ns4107 - 13.2.2010, 11:30
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0936 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.