Здравствуйте, использую debian. Как получить исходный код какой-либо библиотеки? Например, QT, объявление хранится в /usr/include/.. , а определение?
Есть сервер, который постоянно получает какие то данные, подскажите, как реализовать обработку полученных данных, не прерывая получения данных? То есть в буфер что то записалось, его содержимое копируется в другую переменную, и обработка данных ведется параллельно получению.
Подскажите как изменить кодировку выводимых сообщений в режиме командной строки?(русские символы выводятся абра-кадаброй).
Здесь есть несколько решений: http://www.rsdn.ru/forum/cpp/4378529.flat.aspx И вот еще(не так многабукаф): http://www.makak.ru/2008/02/19/vyvod-russkix-bukv-v-konsolnyx-prilozheniyax-na-c/
Проблема с установкой хука. Code: #include <iostream> #include <windows.h> using namespace std; int main() { HINSTANCE hookHandle = LoadLibrary("hook.dll"); HMODULE hook = GetModuleHandle("hook.dll"); HOOKPROC ProcAdd = (HOOKPROC)GetProcAddress(hook, "KeyProc"); if(!hookHandle) return 1; if(!(SetWindowsHookEx(WH_KEYBOARD, &ProcAdd, hookHandle, NULL))) return 2; } Выдает ошибку: Code: cannot convert 'LRESULT (**)(int, WPARAM, LPARAM)' to 'LRESULT (*)(int, WPARAM, LPARAM)' for argument '2' to 'HHOOK__* SetWindowsHookExA(int, LRESULT (*)(int, WPARAM, LPARAM), HINSTANCE__*, DWORD)'| Никак не могу понять в чем проблема.
Вопрос решился. В строке: Code: if(!(SetWindowsHookEx(WH_KEYBOARD, &ProcAdd, hookHandle, NULL))) return 2; Надо делать приведение типа: Code: if(!(SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)&ProcAdd, hookHandle, NULL))) return 2;
Code: #include <iostream> #include <string.h> #include <windows.h> using namespace std; int main() { char* str = "qwert1\nqwert2"; char* buf = strtok(str, "\n"); while (buf != NULL) { cout << buf << endl; buf = strtok(NULL, "\n"); } return 0; } Падает после строки Code: char* buf = strtok(str, "\n"); Что это может быть?
msimg32.dll прослойка между настоящей и екзешником, hijacking. При запуске приложения выдаёт ошибку: "Точка входа в процедуру TransparentBlt не найдена в библиотеке DLL msimg32.dll" Добавил функу в экспорт, дописал main.cpp: Code: extern "C" __declspec(dllexport) BOOL CALLBACK TransparentBlt(){return FALSE;} при компиле выдаёт ошибку: Code: ------ Build started: Project: main, Configuration: Release Win32 ------ Build started 30.07.2012 21:33:08. InitializeBuildStatus: Touching "Release\main.unsuccessfulbuild". ClCompile: main.cpp main.cpp(14): error C2733: second C linkage of overloaded function 'TransparentBlt' not allowed main.cpp(14) : see declaration of 'TransparentBlt' Build FAILED. Time Elapsed 00:00:05.92 ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== сообсна хде копать? исходники https://dl.dropbox.com/u/77070235/msimg32_src.zip сама прога http://rmansys.ru/download/rms5.3ru.zip
Доброго времени суток всем. Есть несколько вопросов 1. Пишу класс для работы с соц. сетью. Какие улучшения можно произвести в данной функции для оптимизации работы, а так же просто улучшения внешнего вида и "чистоты" кода? Вложенный тернарный оператор не особо радует глаз, но растягивать регулярку, зависящую от аргументов ф-ции на несколько строк не хотелось. Как лучше поступить в такой ситуации? Интересны тонкости. А так же флаг "bSomeData". Будет ли рациональнее всего выходить из цикла инкремента страницы таким способом? Или сделать еще один regex_search поверх цикла? (но мне этот вариант кажется не самым лучшим - будет зря теряться процессорное время на поиск вхождения, т.е. эффективность падает в два раза) PHP: int ODClient::ParseFriends(std::vector<std::string> *slUserIds, std::vector<std::string> *slUserFios, unsigned int iGender, bool bOnlineOnly) { unsigned int iPage = 1, iParsed = 0; std::tr1::regex pattern((std::string) (bOnlineOnly ? "onlineIcon.+?" : "") + "<!--\\{\"showNav\".+?\"male\":" + (std::string) (iGender ? (iGender == 1 ? "true" : "false") : "") + ".+?fio\":\"(.+?)\".+?userId\":\"(.+?)\""); std::vector<int> capture_indexes; capture_indexes.push_back(1); capture_indexes.push_back(2); sUrl = "http://www.odnoklassniki.ru/dk?cmd=MyFriendsPageMRB&gwt.requested=" + gwtHash + "&st.cmd=userFriend"; while(true) { curl_easy_setopt(curl, CURLOPT_URL, (sUrl + "&st.page=" + IntToStr(iPage)).c_str()); curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); sResult = ""; curlRes = curl_easy_perform(curl); if(curlRes == CURLE_OK) { bool bSomeData = false; const std::tr1::sregex_token_iterator end; for(std::tr1::sregex_token_iterator i(sResult.begin(), sResult.end(), pattern, capture_indexes); i != end;) { if(slUserFios != NULL) slUserFios->push_back((*i).str()); ++i; slUserIds->push_back((*i).str()); ++i; if(!bSomeData) bSomeData = true; iParsed++; } if(!bSomeData) break; iPage++; } else if(curlRes == CURLE_OPERATION_TIMEDOUT || curlRes == CURLE_COULDNT_CONNECT) return ERR_TIMEOUT; else return ERR_UNKNOWN; } return iParsed; } Одним словом, глядя на функцию, что вам хочется подправить и подкорректировать в ней? 2. Какой тип линковки библиотеки libcurl лучше использовать, если меня совершенно не волнует размер получаемого на выходе файла? Нужно только одно - стабильная работа при 500+ потоках с использованием канала 300 мбит. Заранее спасибо за ответы.
А чем юникс сокеты не угодили? Насколько я помню на них реализован xbtt, который держит количество активных сессий я скажу не малое, пример тому rutracker.
Чтобы записать юзериды и ФИО юзеров во внешние векторы. Решил не изобретать велосипед, и воспользоваться библиотекой, которая была написана специально для работы с HTTP-протоколом)