![]() |
|
Другие темы раздела | |
C++ Чем сконвертировать в русский язык такие крякозябры?
https://www.cyberforum.ru/ cpp/ thread238935.html Чем сконвертировать в русский язык такие крякозябры? OemToChar не подходит. Я мог бы разные способы перебрать, но кроме OemToChar и CharToOem ничего не знаю. Конкретно в данном случае проблема... |
C++ Проверка на ошибки старался написать прогу на C++ но там синтаксические ошибки(или несинтаксические) выдаёт, вродебы смотрел все верно, ребята посмотрите пожалуста, если есть ошибки исправьте если не трудно |
C++ Поиск файлов в локальной сети Добрый день. Есть задача: написать программу для поиска файлов в локальной сети. Подскажите, пожалуйста, как это делается. https://www.cyberforum.ru/ cpp/ thread238846.html | C++ Распараллеливание на C++ и MPI Задача состоит в том, чтобы написать параллельный алгоритм метода сопряженных градиентов для решения линейной системы. Непосредственно метод сопряженных градиентов сожержит на некоторых этапах:... https://www.cyberforum.ru/ cpp/ thread238510.html |
gethostbyname() возвращает 11004 C++ struct sockaddr_in addr; struct hostent* hp; int retval; retval = WSAStartup(MAKEWORD(1, 1), &wsa); if (retval != 0) return 1; hp = gethostbyname(host); if(retval == NULL) return... |
C++ NIST STS Салют Кодеры! есть у кого-то скомпилированная версия NIST STS и желание поделиться?:) Буду признателен! Добавлено через 59 минут Проблемма решена! https://www.cyberforum.ru/ cpp/ thread238268.html |
C++ Редактор кода C++ с автоподстановкой
https://www.cyberforum.ru/ cpp/ thread238173.html Подскажите хороший редактор с автоподстановкой (завершением ввода) при написании кода на C++. |
C++ Как использовать динамическое выделение памяти для новых массивов фиксированного размера? как использовать динамическое выделение памяти для новых массивов фиксированного размера? |
C++ С чего начинать?
https://www.cyberforum.ru/ cpp/ thread237881.html Подскажите пожалуйста,мне,как новичку,С чего в С начинать? Какой компилятор выбрать лучше,может какой-нибудь учебник.Я глядел в литературе по С,но не нашёл там ничего для новичка.На данный момент... |
C++ нужно наставление)))
https://www.cyberforum.ru/ cpp/ thread237503.html доброго времени суток! пишу наверное не по теме, но я не знаю где это можно написать.потому прошу перенести тему в соотвецтвующий раздел форума.спасибо. уважаемые форумчане, помогите с прогой. хочу... |
C++ сравнительные характеристики систем программирования Turbo Pascal и Borland C сравнительные характеристики систем программирования Turbo Pascal и Borland С?????? |
C++ В эмуляторе Cygwin, ошибка при компиляции в gcc: No include path in which to find stdio.h
https://www.cyberforum.ru/ cpp/ thread237317.html No include path in which to find stdio.h это как я понял означает, что компилятор не находит заголовачные файлы, но в usr/include/ и usr/inlude/sys/ они все есть. Помогите плиз |
0 / 0 / 0
Регистрация: 17.09.2015
Сообщений: 2
|
|
0 | |
Работа с DLL - C++ - Ответ 134771006.02.2011, 18:22. Показов 872. Ответов 0
Метки (Все метки)
В общем смысл такой, есть библиотека, которая должна возвращать два значения. Одно интовское и одно текстовое. Какой длины будет тест я узнаю только в библиотеке, соответственно и память выделять надо в ней под char*, так как ансистринги лучше не использовать. Значит вот исходники..
Файл cpp библиотеки Код: c 1. //--------------------------------------------------------------------------- 2. #include <vcl.h> 3. #include <windows.h> 4. 5. char * s = "Библиотека для работы с RAR"; 6. 7. #pragma argsused 8. int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) 9. { 10. return 1; 11. } 12. //--------------------------------------------------------------------------- 13. 14. extern "C" void __stdcall __declspec(dllexport) GetDllName(char **NameDll, int * TypeDll) 15. { 16. *NameDll = (char*)malloc(sizeof(s)); 17. *NameDll = strcpy(*NameDll,s); 18. *TypeDll = 38; 19. } 20. extern "C" void __stdcall __declspec(dllexport) FreeDllMemory(char ** NameDll, int * TypeDll) 21. { 22. free(*NameDll); 23. } //--------------------------------------------------------------------------- #include <vcl.h> #include <windows.h> char * s = "Библиотека для работы с RAR"; #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- extern "C" void __stdcall __declspec(dllexport) GetDllName(char **NameDll, int * TypeDll) { *NameDll = (char*)malloc(sizeof(s)); *NameDll = strcpy(*NameDll,s); *TypeDll = 38; } extern "C" void __stdcall __declspec(dllexport) FreeDllMemory(char ** NameDll, int * TypeDll) { free(*NameDll); } Далее файл h проги Код: c 1. //--------------------------------------------------------------------------- 2. 3. #ifndef function2H 4. #define function2H 5. 6. //--------------------------------------------------------------------------- 7. typedef void __stdcall (__import * NameDllType(char **, int *)); 8. typedef void __stdcall (__import * FreeDllType(char **, int *)); 9. NameDllType * FunctionDllName;//тип описан в h модуле 10. FreeDllType * FreeDllFunc; 11. 12. void LoadLibraryDlls(); 13. #end //--------------------------------------------------------------------------- #ifndef function2H #define function2H //--------------------------------------------------------------------------- typedef void __stdcall (__import * NameDllType(char **, int *)); typedef void __stdcall (__import * FreeDllType(char **, int *)); NameDllType * FunctionDllName;//тип описан в h модуле FreeDllType * FreeDllFunc; void LoadLibraryDlls(); #end файл cpp проги, точнее одна функця одного модуля..не важно. Эта функция берет из папки кучу библиотек dll и ищет в них одну и те же функции FreeDllMemory и GetDllName. Когда в папке одна библиотека, код срабатывает..когда две и более...то глючит на второй..ошибка с памтью AV на функции dlls_name_array = NameDll когда вызывает уже второй раз (i=2) а в NameDll полная фигня, хотя в первый раз все ок; И еще такая тема!!!!! Когда в цикле второй раз вызывается FunctionDllName(&NameDll,&TypeDll); в нее по F8 не заходит, хотя точки останова в библиотекке стоят. Может функция тупо не срабатывает??? ПОМОГИТЕ В ОБЩЕМ!!! dlls_name_array = NameDll; dlls_ext_array = "RAR"; Переменные массивы выше - Ансистринги , объявленные в проге. Надо чтоб в них по выходу из функции LoadLibraryDlls() были значения. Проблема скорее всего в NameDll. Как ее правильно объявлять, выделять память и т.п. Код: c 1. void LoadLibraryDlls() 2. { 3. TSearchRec sr; 4. int i = 1; 5. if (FindFirst(ExtractFilePath(Application->ExeName) + "plugins\\*.DLL", faAnyFile, sr) == 0) 6. { 7. do 8. { 9. if ((sr.Attr & faDirectory) == 0) 10. { 11. if (UpperCase(ExtractFileExt(sr.Name)) == ".DLL") 12. { 13. AnsiString sss = ExtractFilePath(Application->ExeName) + "plugins\\" + sr.Name; 14. HINSTANCE lib = LoadLibrary(sss.c_str()); 15. if(lib) 16. { 17. FunctionDllName = (NameDllType *)GetProcAddress(lib,"GetDllName"); 18. FreeDllFunc = (FreeDllType *)GetProcAddress(lib,"FreeDll"); 19. if (FunctionDllName) 20. { 21. char * NameDll; 22. int TypeDll = 0; 23. FunctionDllName(&NameDll,&TypeDll); 24. dlls_name_array[i] = NameDll; 25. dlls_ext_array[i] = "RAR"; 26. //FreeDllFunc(&NameDll,&TypeDll); 27. NameDll = NULL; 28. i++; 29. } 30. } 31. FreeLibrary(lib); 32. } 33. } 34. } while (FindNext(sr) == 0); 35. FindClose(sr); 36. dlls_name_array[i] = "ERROR"; 37. dlls_ext_array[i] = "ERROR"; 38. } 39. } Вернуться к обсуждению: Работа с DLL C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
06.02.2011, 18:22 | |
Готовые ответы и решения:
0
Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? Работа с DLL Windows I/o без Kernel32.dll и Advapi32.dll При компиляции DLL-проекта не создается DLL-ка |
06.02.2011, 18:22 | |
Помогаю со студенческими работами здесь
0
Работа с dll Работа с библиотеками dll Работа с DLL ом, загляните на 1 минуту Builder 2009 работа со статической dll? |