Страницы

11 апреля 2012 г.

C++. Компилятор "VS 2005/2008". Ошибка LNK2019

Добрый день.

       Класс описанный в предыдущем посте я изначально писал с использованием IDE Code::Blocks 10.5 , Компилятор gcc. После этого функционал был отлажен, я перенес его в библиотеку которая компилится VC 2005/2008 на базе все того же Code::Blocks.
Попытался сделать билд и приплыл... Повалились ошибки:

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegQueryValueExA@24 referenced in function "private: void __thiscall 
 win_reg::Registry::SysGetValue(char const *,unsigned char *,unsigned long *)" (?SysGetValue@Registry@win_reg@@AAEXPBDPAEPAK@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegSetValueExA@24 referenced in function "private: void __thiscall win_reg::Registry::SysSetValue(char const *,unsigned long,unsigned char const *,unsigned long)" (?SysSetValue@Registry@win_reg@@AAEXPBDKPBEK@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegOpenKeyExA@20 referenced in function "public: void __thiscall win_reg::Registry::OpenKey(struct HKEY__ * *,char const *,bool)" (?OpenKey@Registry@win_reg@@QAEXPAPAUHKEY__@@PBD_N@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegCreateKeyExA@36 referenced in function "public: void __thiscall win_reg::Registry::OpenKey(struct HKEY__ * *,char const *,bool)" (?OpenKey@Registry@win_reg@@QAEXPAPAUHKEY__@@PBD_N@Z)|
 

w_registry.obj||error LNK2019: unresolved external symbol __imp__RegCloseKey@4 referenced in function "public: void __thiscall win_reg::Registry::CloseKey(struct HKEY__ *)" (?CloseKey@Registry@win_reg@@QAEXPAUHKEY__@@@Z)|


Описание ошибки LNK2019 можно прочесть здесь.

       В моем случае проблема в том, что линкер видел объявления функций Windows API (а именно их ANSI версий), но не видел их определения.

       Определения этих функций есть, они содержаться в файле "AdvAPI32.Lib" (у меня этот файл лежал в каталоге либов от борланда и от SDK Microsoft (X:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\)).
Все что необходимо для решения вышеописанной проблемы - подключить "AdvAPI32.Lib" к проекту.

Комментариев нет:

Отправить комментарий