| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > как правильно описать класс для использования? |
| Автор: Ksen 27.4.2011, 21:20 | ||||||
| Здравствуйте! Помогите, пожалуйста, описать класс для того чтобы его функции можно было использовать в другом файле... FuncServ.h"
FuncServ.cpp
Service.cpp
при построении вываливается куча ошибок линковки заголовочных файлов... помогите привязать класс....пожалуйста |
| Автор: Ksen 27.4.2011, 23:02 |
| по разбиралась немного((( поправила некоторые неточности...в принципе почти всё осталось так же...но теперь мне выдаёт компилятор вот такие ошибки ужасные.... 1>.\Service.cpp(6) : error C2471: невозможно обновить базу данных программы 'c:\documents and settings\admin\мои документы\visual studio 2008\projects\service\service\debug\vc90.pdb' 1>.\Service.cpp(27) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции 1>FuncServ.cpp 1>.\FuncServ.cpp(3) : error C2471: невозможно обновить базу данных программы 'c:\documents and settings\admin\мои документы\visual studio 2008\projects\service\service\debug\vc90.pdb' 1>.\FuncServ.cpp(40) : warning C4172: возвращение адреса локальной или временной переменной 1>.\FuncServ.cpp(43) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции кто-нибудь знает что с этим делать? у меня такое чувства, что все проблемы из-за типа данных LPBYTE...компилятор видимо не может его передать корректно... кто-нибудь может подсказать...как тут быть, как лучше возвращать значение в функции? |
| Автор: Ksen 28.4.2011, 17:27 | ||||
| помогите, пожалуйста разобраться дальше... решила организовать массив структур, в который бы я передавала список служб...а указатель на этот массив возвращать и использовать в дальнейшем... FuncServ.h
FuncServ.cpp
и потом делаю в main вот так: FuncServ RS; Serv ps = RS.ReceiveService(); у меня теперь вываливается куча ошибок с которыми я не знаю что делать(((( Помогите разобраться... 1>FuncServ.obj : error LNK2028: ссылка на неразрешенную лексему (0A00000A) "extern "C" int __stdcall CloseServiceHandle(struct SC_HANDLE__ *)" (?CloseServiceHandle@@$$J14YGHPAUSC_HANDLE__@@@Z) в функции "public: struct Serv __clrcall FuncServ::ReceiveService(void)" (?ReceiveService@FuncServ@@$$FQAM?AUServ@@XZ) 1>FuncServ.obj : error LNK2028: ссылка на неразрешенную лексему (0A00000B) "extern "C" int __stdcall EnumServicesStatusExW(struct SC_HANDLE__ *,enum _SC_ENUM_TYPE,unsigned long,unsigned long,unsigned char *,unsigned long,unsigned long *,unsigned long *,unsigned long *,wchar_t const *)" (?EnumServicesStatusExW@@$$J240YGHPAUSC_HANDLE__@@W4_SC_ENUM_TYPE@@KKPAEKPAK33PB_W@Z) в функции "public: struct Serv __clrcall FuncServ::ReceiveService(void)" (?ReceiveService@FuncServ@@$$FQAM?AUServ@@XZ) 1>FuncServ.obj : error LNK2028: ссылка на неразрешенную лексему (0A00000C) "extern "C" struct SC_HANDLE__ * __stdcall OpenSCManagerW(wchar_t const *,wchar_t const *,unsigned long)" (?OpenSCManagerW@@$$J212YGPAUSC_HANDLE__@@PB_W0K@Z) в функции "public: struct Serv __clrcall FuncServ::ReceiveService(void)" (?ReceiveService@FuncServ@@$$FQAM?AUServ@@XZ) 1>FuncServ.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" int __stdcall CloseServiceHandle(struct SC_HANDLE__ *)" (?CloseServiceHandle@@$$J14YGHPAUSC_HANDLE__@@@Z) в функции "public: struct Serv __clrcall FuncServ::ReceiveService(void)" (?ReceiveService@FuncServ@@$$FQAM?AUServ@@XZ) 1>FuncServ.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" int __stdcall EnumServicesStatusExW(struct SC_HANDLE__ *,enum _SC_ENUM_TYPE,unsigned long,unsigned long,unsigned char *,unsigned long,unsigned long *,unsigned long *,unsigned long *,wchar_t const *)" (?EnumServicesStatusExW@@$$J240YGHPAUSC_HANDLE__@@W4_SC_ENUM_TYPE@@KKPAEKPAK33PB_W@Z) в функции "public: struct Serv __clrcall FuncServ::ReceiveService(void)" (?ReceiveService@FuncServ@@$$FQAM?AUServ@@XZ) 1>FuncServ.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" struct SC_HANDLE__ * __stdcall OpenSCManagerW(wchar_t const *,wchar_t const *,unsigned long)" (?OpenSCManagerW@@$$J212YGPAUSC_HANDLE__@@PB_W0K@Z) в функции "public: struct Serv __clrcall FuncServ::ReceiveService(void)" (?ReceiveService@FuncServ@@$$FQAM?AUServ@@XZ) 1>C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\Service\Debug\Service.exe : fatal error LNK1120: 6 неразрешенных внешних элементов |
| Автор: Ksen 28.4.2011, 19:46 |
| оказывается надо было добавить #pragma comment(lib, "Advapi32.lib") |
| Автор: borisbn 28.4.2011, 23:24 | ||||
Ты всё-таки упорно продолжаешь возвращать указатель на структуру (вернее на массив структур), созданную на стеке. Я уже объяснял тебе, что это приведёт к обращению к несуществующей памяти. Ок, смотри, как должна выглядеть такая функция
и вызов
правильно ли она работает в плане доставания этих имён - не знаю (не смотрел описание), но в плане возврата списка строк - должно быть правильно. |