в библиотеке CImg нет ничего, кроме файла заголовка, на который можно ссылаться.
Вы не можете ссылаться на заголовочный файл. Если это библиотека только для заголовков, вам не нужно ничего связывать. Вы включаете заголовочный файл, и функции, которые он определяет, компилируются напрямую. Похоже, это относится к CImg; в документации говорится, что это автономная библиотека шаблонов, состоящая только из одного заголовочного файла. Так что действительно, все, что вам нужно сделать, это включить его, и вы отправляетесь на гонки.
Неразрешенные ошибки внешнего символа возникают откуда-то еще. Вы должны прочитать сообщения об ошибках и посмотреть на имена функций, чтобы увидеть, где именно.
Пара советов:
- Префикс
__imp_
предполагает, что вы смотрите на функцию Windows API.
- Если вы этого не знали, вы всегда можете проигнорировать префикс и погуглить удобочитаемую часть имени, в данном случае
SetDIBitsToDevice
. Скорее всего, вы найдете документацию или, по крайней мере, что-то, что укажет вам правильное направление.
Действительно, в этом случае вы получаете право на документацию Microsoft SDK для SetDIBitsToDevice
функция. Это функция Windows API, и документация Microsoft всегда говорит вам, на какую библиотеку вам нужно ссылаться, чтобы ее использовать. Посмотрите внизу страницы:
Заголовок: Wingdi.h (включая Windows.h)
Библиотека: Gdi32.lib
DLL: Gdi32.dll
Заголовочный файл библиотеки CImg, очевидно, уже включает заголовочный файл Windows.h, иначе вы получили бы ошибку времени компиляции. Вы получаете сообщение об ошибке компоновщика, что означает, что вы не указали компоновщику компоновку в библиотеке Gdi32.lib
. Это то, что позволит вам вызывать функции GDI. Это заглушка, облегчающая вызов функций, экспортированных из Gdi32.dll
.
В общем, при создании приложения для Windows вы захотите связать, как минимум, kernel32.lib
, user32.lib
и gdi32.lib
.
Этот вопрос содержит дополнительную информацию о том, как справляться с ошибками неопределенных символов, а также о том, как настроить компоновщик. В Visual Studio перейдите в раздел Свойства проекта Компоновщик C/C++ Введите дополнительные зависимости. Или добавьте #pragma comment(lib, "gdi32.lib")
в исходный файл (ваш предварительно скомпилированный заголовок — хорошее место, обычно называемое StdAfx.h
).
person
Cody Gray
schedule
22.07.2016