Как подключить библиотеку к проекту в Visual Studio 2003?

morda31

ламерский вопрос у меня, думаю.

Helga87

Если проект на C# или VB.NET, то Project->Add Reference

morda31

прект на С++. Win32 project

Helga87

Попробуй Project->Properties->Linker->Input->Additional dependencies

morda31

При компиляции пишет
scrnsave.lib(scrnsave.obj) : error LNK2019: unresolved external symbol _imp__InitCommon4 referenced in function 16
Debug/ssaver1.exe : fatal error LNK1120: 1 unresolved externals

morda31

исходный код простой
 
#include <windows.h>
#include <scrnsave.h>
LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
return 0;
}
BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
return true;
}
BOOL WINAPI RegisterDialogClasses (HANDLE hInst)
{
return true;
}

okunek

что-то не видно, чтоб у тебя в коде была InitCommonControlsEx

morda31

может это будет в мной подключаемой библиотеке ScrnSave.lib

okunek

Ну так уточнил бы, что "исходный код", который ты привел, это код не библиотеки, а проги, которая юзает эту библиотеку

morda31

Тут прога то никакая.
создаем win32 project. empty. Добавляем файл a.cpp. В нем пишем
#include <windows.h>
#include <scrnsave.h>
LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
return 0;
}
BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
return true;
}
BOOL WINAPI RegisterDialogClasses (HANDLE hInst)
{
return true;
}
Дальше компилим без подключения, как ты сказал. Получаем ошибки
LIBCD.lib(wincrt0.obj) : error LNK2019: unresolved external symbol 16 referenced in function _WinMainCRTStartup
Debug/ssaver1.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://c:\Documents and Settings\almaz\Мои документы\Visual Studio Projects\ssaver1\ssaver1\Debug\BuildLog.htm"
ssaver1 - 2 error(s 0 warning(s)
при подключении как ты сказал, те ошибки, что я написал раньше.

okunek

>win32 project
а где функция WinMain? без нее никак

morda31

должна быть в scrnsave.lib или scrnsave.h

okunek

Вот там ее не должно быть

morda31

А что вообще находится в scrnsave.lib. Как то он плохо открывается просмотрщиком

morda31

Ладно. если тот же код написать в VC6. И подключить библиотеку scrnsabe.lib к проекту, то прога нормально компилится.

morda31

Во как написано :
Для создания хранителей экрана в комплект Visual C++ входит заголовочный файл srcnsave.h
(D:Program FilesMicrosoft Visual StudioVC98Includescrnsave.h в котором находятся определения
констант и функций на все случаи жизни, необходимых для функционирования screensaver'а в
среде Windows 9x/NT, и статическая библиотека scrnsave.lib. -------------Точка входа в программу
(функция WinMain) находится в самой scrnsave.lib, что очень сильно облегчает нам жизнь.-------------- Наш
хранитель пишется ориентировочно для Windows NT (другого у меня нету хотя должен
работать на всех платформах. Различие состоит в том, что для Windows 9x приходится писать
еще одну функцию, отвечающую за смену пароля. В NT и выше эту роль выполняет системный
процесс Winlogon. Если ключ HKEY_CURRENT_USERControl PanelDesktopScreenSaverIsSecure в
системном реестре Windows не равен нулю, то Winlogon будет запрашивать пароль перед
выходом из скринсейвера. Хотя без этой функции можно и обойтись.

Elina74

вместо code лучше в данном случае использовать quote, чтобы не делать сообщение слишком широким...

morda31

дело не в коде и не куоте а в программе. Не хочет писаться. А за куот спасибо.

okunek

Ну тода я наврал... хотя че-то не видел нифига, чтоб winmain была в библиотеке...

bobby

Ну, например, в MFC так.

kokoc88

сomctl32.lib

morda31

так как подключить библиотеку в проект?

kokoc88

Так как написано в этом посте:
Project->Properties->Linker->Input->Additional dependencies

morda31

разобрался в чем ошибка была. Надо было еще одну библиотеку подключить.

Olenenok

Есть ещё способ подключать библиотеки с помощью #pragma, только как точно не помню.

dryadanna

Может так?
В VC6:
В окне workspace'a кликаем назваине проекта (правой кнопкой? выбираем add files, добавляем нужную библиотеку *.lib. Bуаля.
ЕСли не знаешь, в какой либе функция, поможет поиск файлов с текстом типа ItIsTheNameOfTheFunction.

kokoc88

Есть, обычно в VS это делают так:
#pragma message(__FILE__": Automatically linking with abc.lib")
#pragma comment(lib, "abc.lib")
Оставить комментарий
Имя или ник:
Комментарий: