namespace for linker

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

  1. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Есть несколько ддл-ок с чуть-чуть пересекающимися
    сигнатурами функций. Допустим есть такая функция
    int vers();
    в нескольких одновременно. Если её лоадить динамически
    и вызывать , то проблем то нет.
    А возможно ли статически их связать?
    T.E. можно как-то в VS статически прилинковать
    либу, указав линкеру из какой именно либы,
    эта функция для связывания.
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Всё перерыл!
    Никак нельзя.

    Из этого вытекает одно интересное последствие :)
    Если , увеличивая функционал проекта, начинается использование
    дополнительных длл-ок и в этих длл есть фунции с сигнатурами
    уже используемыми в других длл проекта(изначально статически) -
    все места в проекте , вызывающие спорные функции, должны
    быть переписаны в вызовы на динамический лад.
     
  3. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    В первом посте: что имеется ввиду под "статически их связать"?
    Тебе хочется прилинковаться из своего проекта к DLL'ке статически? Это делается с помощью генерации .lib файла из DLL и использованию его.
    Вобщем, не совсем понял вопроса.
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Joes
    старался объянить попроще:)
    ты не так понял.
    есть проект cary.exe он использует длл astra.dll(стат связь)
    в astra.dll есть фунция int vers()
    Далее к проекту добавляется новая длл audit.dll
    в audit.dll так-же присутствуе функция int vers()
    вот такая гадость :)
    сначала я пытался как-то сконфигурировать линкер, для одновременного
    статического связывания одинаковых функций из разных длл и
    всех просил помоч мне в этом. Но тема баян. Разрулить можно
    только динамичеким связыванием.

    и получилось интересное следствие:
     
  5. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    Гм, т.е. вопрос в том, что есть две либы с одинаковым названием функции (в твоем случае - vers), но хочется из них импортировать функции статически?

    В С++ наверное можно разрулить namespace'ом и __declspec(import). В Си - никак, imho.
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Joes
    вот и я про то
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Аналогичная проблема: многие функции из CRT дублируются в ntdll.