Как обнружить такую ошибку

Тема в разделе "WASM.BEGINNERS", создана пользователем UTeX, 24 ноя 2007.

Статус темы:
Закрыта.
  1. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    Вобщем при написании проги возникло ошибка линкера
    Он указывает на то что вроде бы в одном из модулей дважды обьявлена какая-то переменная
    Но суть в том что ее не то что дважды- ее воовще нет

    _SessionID

    Поискал ее по всем файлам проекта и подключенным заголовочным файлам - ее нет.

    как быть

    опцию линкера
    /FORCE:MULTIPLE не предлагать, т к она у меня почему то не работает
     
  2. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    Ой, я наверное не правильно выразился - не "обнаружить" а исправить
    ))Т к обнаружить мне ее уже удалось
     
  3. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Как-как, и куча. Давайте обьектники проекта сюда(и R3Invisible.obj в частности), либо показывайте сорцы.
    Либо ищите редефинишн SessionId сами.
     
  4. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    mathio

    не нервничай ))


    Вобщем я в этом модуле пытался отключать в заголовке подключенные модули
    и оказалось
    что виной всему ntdll.h
    (скорее всего т к остальные инклуды я зкоментировал и остался только этот)
    его я подключаю в нескольких местах

    его код

    Код (Text):
    1. #pragma once
    2.  
    3. #define  WIN32_LEAN_AND_MEAN
    4. #include <windows.h>
    5.  
    6. namespace NT
    7. {
    8.     extern "C"
    9.     {
    10.         #pragma warning(disable:4005)
    11.         #include <ntdef.h>
    12.         //#include <ndis.h>
    13.         //typedef __int32 LONG_PTR, *PLONG_PTR;
    14.         //typedef unsigned __int32 ULONG_PTR, *PULONG_PTR; 
    15.         #define _WIN2K_COMPAT_SLIST_USAGE
    16.         #include <ntddk.h>
    17.         #include <ntddser.h>
    18.         #include <ntstatus.h>
    19.         #include "native.h"//undocumented definitions
    20.         #pragma warning(default:4005)
    21.     }
    22. }
    23.  
    24. using NT::NTSTATUS;
     
  5. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Не хотите показывать больше, ваше право, но по приведенному куску лично я ничего сказать не смогу.
    Как вариант можно "подхачить" таблицу символов одного из двух обьектников(если SessionId обьявлено только в двух - code.obj и R3Invisible.obj) и далее уже ручками связывать их линкером. Но это - вариант для мазохистов или кому делать больше нечего.
     
  6. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    а смысл показывать больше? если ошибка сосредоточена тут.
    ведь говорю же что все закоментировал в модуле R3Invisible кроме этого определения.
     
  7. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    хачить таблицы это идиотский подход

    кто нибудь сталкивался сабжем?
     
  8. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    в программе модуль R3Invisible.obj

    состоит из

    R3Invisible.h
    //---
    #include"ntdll.h"
    //---


    R3Invisible.cpp
    //---
    #include"R3Invisible.h"
    //---


    Беру удаляю модуль из проекта
    все работает
    ппц
    в чем дело?
     
  9. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Вы издеваетесь чтоль?
    Например, за майкрософтовские хидера я могу быть спокоен, но что вы накучевертили в своих(native.h) одному богу известно. Вполне вероятно, что туда и влепили объявление SessionId.
     
  10. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    Этот хидер не мой, ссылку давал Four-F
    я его и не думал на него

    покопался и нашел там определение ULONG SessionId;
     
  11. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    Вобщем ясно все - это моя ошибка. ("Всегда все проверяй") Тема закрыта.

    П С: Я и не думал издеваться
     
Статус темы:
Закрыта.