Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Правильное задание зависимостей между проектами

7
04 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Имеется решение из 3-х проектов, 2 из которых — exe, а один — DLL. 1 из exe не рассматриваем, с остальными зависимостями он не связан. Из DLL в exe экспортируется одна функция (хук), т.е. сначала по идее должна компилироваться DLL, затем — зависимый exe. Не могу разобраться, какой из проектов поставить в startup и как настроить зависимости, чтобы всё собиралось и отлаживалось корректно.
Канает только сборка сначала DLL, затем exe и запуск. Но если я затем изменю что-то в DLL, эти изменения студией замечены не будут, и пересобрать проект она не предложит. А потом и вовсе бредовые ошибки полезут — типа неразрешённого символа _main в проекте exe. Как правильно всё настроить?
Прикрепленные файлы:
8 Кб
Загрузок: 654
1
05 ноября 2013 года
kot_
7.3K / / 20.01.2000
Не очень понятно - проекты в одном солюшене? Тогда зависимости необходимо указать нужные. В шестой студии это делается в Project / Dependencies. В 2012 - Проект / Зависимости проектов
7
05 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Да, в одном — я же написал «имеется решение из 3-х проектов». При указании нужных зависимостей получаю всякие дурные (и не очень) ошибки компиляции — например, «неопределённый символ _main» — которых по идее быть не должно. Попробуй соберись (если что, проект для VS 2010), поймёшь, о чём я толкую.
Я чего только не делал, но так и не смог реализовать задуманное.
1
05 ноября 2013 года
kot_
7.3K / / 20.01.2000
Я собрал твой проект - поставил для Out зависимость от OutDLL и выполнил сборку решения. Все собралось - варнинги на main можно не считать.
7
05 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Поставил зависимость для In от InDLL (наверное, ты его имел в виду, а не Out). В первый раз всё тоже отлично собралось и даже запустилось. Но стоило только поменять InDLL и запустить, как…
Вот такая странная фигня. Будь всё так просто, я б не стал сюда писать.
Прикрепленные файлы:
10 Кб
Загрузок: 1.4K
1
06 ноября 2013 года
kot_
7.3K / / 20.01.2000
ты же не указал - какой проект для тебя "первый" какой "второй" - а модуль телепатии поломан, знаешь ли :)
завтра на работе протестирую изменив что либо в длл - но ИМХО это либо проблема со студией, либо что то ты не то делаешь. Потому как построение зависимостей - оно как раз таки так и делается. Вроде работает все без проблем у меня с десяток проектов так живет - вроде ничего не ломается.
Как вариант - попробуй изменить main-функции с С-стиля на виндовый. Может ее это глючит?
7
06 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Просто OutDLL у меня нет :) Каюсь, моя ошибка. Out можно вообще не трогать, основной — In, который импортирует функцию из InDLL (хук); следовательно, In зависит от InDLL. Зависимость поставил, «линковать зависимости» — тоже. Результат — в картинке выше: успешной является только 1-я сборка и запуск, дальше получаем какую-то фигню.
1
06 ноября 2013 года
kot_
7.3K / / 20.01.2000
Пересоздай проект как Win32 приложение. Тут проблема не в зависимостях - тут имен проблема в типах проекта.
7
06 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Хм, а у меня разве не такой? Сейчас на работе нет возможности проверить. Но тот факт, что создаётся ещё и библиотека In.lib, косвенно твои слова подтверждает. Это меня несколько удивило, кстати. Ума не приложу, как такое могло случиться.
1
06 ноября 2013 года
kot_
7.3K / / 20.01.2000
Я имею ввиду - ты создал проект как Win32 а точки входа у него как в консольном. Как в том анекдоте - "либо крестик сними, либо трусы надень".
Либо пересоздай его как Win32 - правильно описав точки входа. Либо измени ему тип на консольный. Вроде это решает проблему - но сильно не углублялся - своей работы хватает.
7
06 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
А, если ты о названии функции, то у меня просто в свойствах прописано переопределение точки входа, дабы отвязаться от рантайма. Но дома попробую, авось поможет.
1
06 ноября 2013 года
kot_
7.3K / / 20.01.2000
И кстати, при сборке жаловался на установку хука - я изменил код следующим образом:

 
Код:
HOOKPROC HookProcFl = (HOOKPROC)GetProcAddress(hinstDLL/*Instance you dll than you get sameone*/, "HookProc");
HHOOK hHook=SetWindowsHookEx(WH_GETMESSAGE,HookProcFl,hinstDLL,TE.th32ThreadID);
7
06 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Ворнингом или ошибкой? Просто у меня не жаловался, тут-то всё нормально собирается. Собственно, потому и зависимости, а также экспорт-импорт функции.
А у тебя что писал?
1
06 ноября 2013 года
kot_
7.3K / / 20.01.2000
Цитата: @pixo $oft
Ворнингом или ошибкой? Просто у меня не жаловался, тут-то всё нормально собирается. Собственно, потому и зависимости, а также экспорт-импорт функции.
А у тебя что писал?


Давал ошибку на неправильную функцию (не помню, а сейчас нет времени возвращать все обратно). Но это произошло только тогда, когда солюшен начал собираться без ошибок на линковку.

7
07 ноября 2013 года
@pixo $oft
3.4K / / 20.09.2006
Пересоздал проект,заново его настроил, и вроде всё заработало. Поругалось сначала, но потом успокоилось :)
Библиотеку он ещё не хотел цеплять из зависимостей, и даже прямым добавлением оной в ссылки это не устранилось. Как я понял, он ждал её по другому пути, поэтому пришлось полный указывать. Очень занимательно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог