У меня есть проект C ++, который использует API, который поставляется с файлами DLL и LIB, а также файл заголовка.
Я хочу создать проект Win32 формы.
Мой вопрос заключается в том, как связать проект с файлами DLL и lib.
Но главный вопрос, как мне подписаться на события?
В API я могу вызывать функции, которые возвращаются как при ответе на событие, которые в проекте MFC я бы обычно подписывал в цикле сообщений. Но в Win32 нет цикла сообщений.
Может быть, я сам усложняю ситуацию, и это легче, чем я себе представляю.
Пожалуйста, проясните эту ситуацию для меня.
Спасибо.
Всегда трудно ответить, когда кто-то задает более одного вопроса … В случае вашего «основного вопроса», пожалуйста, покажите соответствующий вызов API для подписки на события. Вы ошибаетесь из-за отсутствия цикла сообщений в Win32 … Просто нет MFC Цикл сообщений.
Сейчас я отвечаю на простой вопрос … «Как вы связываете DLL». Я предполагаю, что вы используете Visual Studio. Это верно? То, как я делаю это, когда я спешу, выглядит так:
#include "mylib.h"#pragma comment(lib, "mylib.lib")
Это все, что нужно сделать. Конечно, мне нужен заголовок, но пока я говорю, компилятору тоже нужно связать библиотеку.
Кажется, я вспоминаю другие случаи, когда я просто перетаскивал файл библиотеки в представление решения проекта, фактически добавляя его в качестве источника. Это тоже работает.
Долгий путь — отредактировать настройки вашего проекта, перейти к Linker раздел и под вход подраздел, вы добавляете свою библиотеку в Дополнительные зависимости список. Вы должны сделать это для всех конфигураций. Есть способы сохранить это должным образом, но я не буду вдаваться в подробности здесь.
Если вы не используете Visual Studio, игнорируйте мой ответ.
Вы не можете связать проект с dll-файлами, вы можете связать свой проект с lib-файлами, вы можете добавить имена lib-файлов в диалог настроек вашего проекта (компоновщик)
Или вы добавляете это в свой код
#pragma comment(lib,"xxxx.lib")
Файлы DLL будут загружены во время выполнения.
Для цикла сообщений см. http://msdn.microsoft.com/en-us/library/windows/desktop/ms644928(v=vs.85).aspx
Или это: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644996(v=vs.85).aspx#modeless_box