HOOKPROC HookProcFl = (HOOKPROC)GetProcAddress(hinstDLL/*Instance you dll than you get sameone*/, "HookProc");
HHOOK hHook=SetWindowsHookEx(WH_GETMESSAGE,HookProcFl,hinstDLL,TE.th32ThreadID);
Правильное задание зависимостей между проектами
Канает только сборка сначала DLL, затем exe и запуск. Но если я затем изменю что-то в DLL, эти изменения студией замечены не будут, и пересобрать проект она не предложит. А потом и вовсе бредовые ошибки полезут — типа неразрешённого символа _main в проекте exe. Как правильно всё настроить?
Не очень понятно - проекты в одном солюшене? Тогда зависимости необходимо указать нужные. В шестой студии это делается в Project / Dependencies. В 2012 - Проект / Зависимости проектов
Я чего только не делал, но так и не смог реализовать задуманное.
Я собрал твой проект - поставил для Out зависимость от OutDLL и выполнил сборку решения. Все собралось - варнинги на main можно не считать.
Вот такая странная фигня. Будь всё так просто, я б не стал сюда писать.
завтра на работе протестирую изменив что либо в длл - но ИМХО это либо проблема со студией, либо что то ты не то делаешь. Потому как построение зависимостей - оно как раз таки так и делается. Вроде работает все без проблем у меня с десяток проектов так живет - вроде ничего не ломается.
Как вариант - попробуй изменить main-функции с С-стиля на виндовый. Может ее это глючит?
Просто OutDLL у меня нет :) Каюсь, моя ошибка. Out можно вообще не трогать, основной — In, который импортирует функцию из InDLL (хук); следовательно, In зависит от InDLL. Зависимость поставил, «линковать зависимости» — тоже. Результат — в картинке выше: успешной является только 1-я сборка и запуск, дальше получаем какую-то фигню.
Пересоздай проект как Win32 приложение. Тут проблема не в зависимостях - тут имен проблема в типах проекта.
Хм, а у меня разве не такой? Сейчас на работе нет возможности проверить. Но тот факт, что создаётся ещё и библиотека In.lib, косвенно твои слова подтверждает. Это меня несколько удивило, кстати. Ума не приложу, как такое могло случиться.
Либо пересоздай его как Win32 - правильно описав точки входа. Либо измени ему тип на консольный. Вроде это решает проблему - но сильно не углублялся - своей работы хватает.
А, если ты о названии функции, то у меня просто в свойствах прописано переопределение точки входа, дабы отвязаться от рантайма. Но дома попробую, авось поможет.
Код:
А у тебя что писал?
Цитата: @pixo $oft
Ворнингом или ошибкой? Просто у меня не жаловался, тут-то всё нормально собирается. Собственно, потому и зависимости, а также экспорт-импорт функции.
А у тебя что писал?
А у тебя что писал?
Давал ошибку на неправильную функцию (не помню, а сейчас нет времени возвращать все обратно). Но это произошло только тогда, когда солюшен начал собираться без ошибок на линковку.
Библиотеку он ещё не хотел цеплять из зависимостей, и даже прямым добавлением оной в ссылки это не устранилось. Как я понял, он ждал её по другому пути, поэтому пришлось полный указывать. Очень занимательно.