![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Ksen |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Здравствуйте!
Помогите, пожалуйста, описать класс для того чтобы его функции можно было использовать в другом файле... FuncServ.h"
FuncServ.cpp
Service.cpp
при построении вываливается куча ошибок линковки заголовочных файлов... помогите привязать класс....пожалуйста |
||||||
|
|||||||
Ksen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
по разбиралась немного((( поправила некоторые неточности...в принципе почти всё осталось так же...но теперь мне выдаёт компилятор вот такие ошибки ужасные....
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...компилятор видимо не может его передать корректно... кто-нибудь может подсказать...как тут быть, как лучше возвращать значение в функции? |
|||
|
||||
borisbn |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
с этим попроще: удали все файлы из папки Debug
с этим посложнее. смотри - ты создаёшь переменную Services на стеке а затем возвращаешь адрес этой переменной (т.е. просто указатель на стек). А что происходит со стеком, когда функция завершается ? Правильно, он возвращается в первоначальное состояние, т.е. состояние до вызова функции. Другими словами - разрушается. Возвращать указатель можно только на статическую память или на динамически выделенную память в heap'е. и ещё. в чём смысл класса FuncServ ? Почему просто не объявить функцию
не определить её в cpp-шнике
и просто её не вызвать
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||
|
|||||||||
Ksen |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
помогите, пожалуйста разобраться дальше...
решила организовать массив структур, в который бы я передавала список служб...а указатель на этот массив возвращать и использовать в дальнейшем... 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 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 24.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
оказывается надо было добавить
#pragma comment(lib, "Advapi32.lib") |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Ты всё-таки упорно продолжаешь возвращать указатель на структуру (вернее на массив структур), созданную на стеке. Я уже объяснял тебе, что это приведёт к обращению к несуществующей памяти. Ок, смотри, как должна выглядеть такая функция
и вызов
правильно ли она работает в плане доставания этих имён - не знаю (не смотрел описание), но в плане возврата списка строк - должно быть правильно. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |