![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Такой вот код. Тут используются АПИ функции. При команде compile Visual C++ ошибок не выдаёт, а как только надо сделать build *.exe, выдаёт три ошибки. Вот такие:
/////////////////////////////////////////////////////////////////////////////////// --------------------Configuration: test - Win32 Debug-------------------- Linking... test.obj : error LNK2001: unresolved external symbol _NetApiBufferFree@4 test.obj : error LNK2001: unresolved external symbol _NetUserGetGroups@28 Debug/test.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. test.exe - 3 error(s), 0 warning(s) /////////////////////////////////////////////////////////////////////////////////// #include <windows.h> #include <stdio.h> #include <lm.h> #include <string.h> int main() { DWORD EntriesRead = 0; DWORD TotalEntries = 0; LPGROUP_USERS_INFO_0 pBuf = NULL; WCHAR wszUserName[UNLEN+1]; LPCWSTR servername = NULL; char *UserName = NULL; DWORD index; FILE *f = NULL; strcpy(UserName, "NiJazz"); MultiByteToWideChar(CP_ACP, 0, UserName, strlen(UserName)+1, wszUserName, sizeof(wszUserName)/sizeof(wszUserName[0]) ); NetUserGetGroups(servername, wszUserName, 0, (LPBYTE*)&pBuf, MAX_PREFERRED_LENGTH, &EntriesRead, &TotalEntries); for (index = 0; index <= EntriesRead; index ++) { fwprintf(f, L"%s\n", pBuf->grui0_name); pBuf++; } NetApiBufferFree(pBuf); fclose(f); return 0; } |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Правильно, потому как ты либу не прилинковал...
после инклудов впиши: #pragma comment (lib, "netapi32.lib") -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Включи netapi32.lib
Меню Project -> Setting... В setting for... выбери All Configurations Закладка Link Выбури Category - General В поле Object/library modules в конце через пробел допиши netapi32.lib Теперь собирай Другой способ: Меню Project->Add to Project->Files (или правая кнопка мыши на названии проекта в навигаторе и там Add Files to Project...) Ищешь файл netapi32.lib в директории lib Но второй способ обычно используют с нестандартными библиотеками. |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Baa, минута в минуту. Правильно, можно и так.
Только работать всё равно не будет в программе ошибки. |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
RAN, а какие именно ошибки? Ну то, что файл не открыт был для записи - не суть. Дело в том, что exe-файл создался, но выдаёт ошибку такую: "Инструкция по адресу "0x00401241" обратилась к памяти по адресу "0xcccccccc". Память не может быть "written". Что это такое?
|
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Посмотри в отладчике, в каком месте она у тебя вылетает, и исправь
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Куда-то ты пишешь по указателю, который не проинициализирован (ни на что конкретное не показывает) - первая мысль, пришедшая в голову.
-------------------- ![]() |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
mr.DUDA тебе уже одну ошибку указал. Другая ошибка, это использование L"......" в fwprintf. Эта функция работает с char*, поэтому она получит пустую строку (так как первый байт будет 0). Тебе надо перевести pBuf->grui0_name в char*, а потом char* передать в fwprintf.
|
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
И ещё. Я никогда не пользовался NetUserGetGroups, но из описания понял, что он возвращает в EntriesRead кол-во записей. Если там, то в for условие должно быть <, а не <= (или index = 1, а не 0).
Может ещё что-то... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |