Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4

DLL в borland c++

28.07.2009, 23:53. Показов 2880. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Пример кода в dll:
 
int count;
 
int __stdcall __export f_001(const char* cst)
{
  count++;
  ...
  return count;
}
 
//Пример в ехе:
 
int GetCount()
{
  int count;
  ...
  FARPROC f_001_dll = GetProcAddres(dll, "f_001");
  int count = f_001_dll("lalala");
 
 return count;
}
Люди подскажите!!! Как сделать так чтобы count в DLL увеличевался на 1
при каждом вызове GetCount в exe.

У меня при каждом вызове GetCount count = 1;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2009, 23:53
Ответы с готовыми решениями:

Открыть dll из Borland в Visual Studio
Доброго времени суток! Я сталкнулась с одной проблемой. Помогите пожалуйста разобраться. У меня есть dll и lib файлы, написанные на...

Borland C++ Builder 6.0 не может найти свои же dll файлы
Недавно установил Borland C++ Builder 6.0 . Всё бы хорошо но при компиляции проэкта пишет что не знает где файлы: borlndmm.dll ...

Создание DLL в Borland C++ 3.1
Приветствую вас многоуважаемые прогеры!) У меня возникла проблема в написании драйвера для контроллера, проблема заключается в выподании...

6
Айхрень...
 Аватар для Paulie
306 / 176 / 7
Регистрация: 02.06.2009
Сообщений: 1,077
29.07.2009, 00:06
Цитата Сообщение от gon21 Посмотреть сообщение
//Пример кода в dll:
int count;
а где, собственно, задание первоначального значения переменной?
плюс Вам нужно текст

Цитата Сообщение от gon21 Посмотреть сообщение
int count;
...
FARPROC f_001_dll = GetProcAddres(dll, "f_001");
вынести за пределы Вашей функции, так как при каждом её вызове эти значения переопределяются на начальные. Вставьте это в код, где у вас инициализируется переменная dll

Добавлено через 3 минуты 11 секунд
Точнее даже что-то на подобие этого. Уже сплю, поэтому мог иошибиться

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void main()
{
  int dll = LoadLibrary(...);
  ...
  FARPROC f_001_dll = GetProcAddres(dll, "f_001");
  GetCount(f_001_dll);
}
 
int GetCount(FARPROC f_001_dll)
{
int count = f_001_dll("lalala");
 
return count;
}
0
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
29.07.2009, 00:24  [ТС]
Мне нужно так чтоб работоло...

загрузить 1-ну копию dll
и потом многократно вызывать F_001_dll из разных процесов, и
при каждом вызове f_001_dll count в dll должен увеличевотся на 1.

как мне это правильно сделать?

Добавлено через 10 минут 18 секунд
вот мне гдето подсказали. непашит.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int(far* f_001_dll)(const char*);
HANDLE dll = GetModuleHandle("mydll");
(FARPROC)faddr = GetProcAddress(dll,"f_001_dll");            //теперь попробывал отсюда. непашит.
 
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR cl, int)
{
   char buf[255];
 
        CreateMutex(0, 1, "cmx1");
 
           if(GetLastError()!=ERROR_ALREADY_EXISTS)
           {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->CreateForm(__classid(TForm2), &Form2);
                 Application->Run();
           }
           else
           {
             //(FARPROC)faddr = GetProcAddress(dll,"f_001_dll");         //сдесь раннше вызывал
             wsprintf(buf, "RulMain = %x0", dll);
             MessageBox(0, buf, "", MB_OK);
             if((FARPROC)f_001_dll)
             {
               int count = f_001_dll("lalala");
              
             }
        return 0;
}
0
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
29.07.2009, 18:25
Вот так будет работать с процессами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//////////////////////////////
//
// Эту переменную нужно поместить в шаред секцию. Читай в справке борланда по длл как они там создаются. Это пример для визуал студии.
 
#pragma data_seg("shared")
long count = 0;
#pragma data_seg()
#pragma comment(linker, "section:shared,rws")
//
/////////////////////////////
 
int __stdcall __export f_001(const char* cst)
{
   long res;
   res =  InterlockedIncrement(&count);
    ...
   return res;
}
0
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
30.07.2009, 22:54  [ТС]
Спосибо попоробую сегодня.

Добавлено через 5 часов 27 минут 15 секунд
[QUOTE=Alexandoros;228013]Вот так будет работать с процессами.
[CPP]
//////////////////////////////

Както умена не пошло, а точнее ничего не изменилось.
A вообще мине надо чтоб эта DLL из других процесов вызывалась бы
по GetModuleHandle("My_dll");

Добавлено через 2 минуты 41 секунду
Кстати с семафорами вроде поучается, но немножко нето.
0
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
30.07.2009, 23:58
GetModuleHandle("My_dll");
юзать нуна LoadLibrary
0
0 / 0 / 0
Регистрация: 28.07.2009
Сообщений: 4
31.07.2009, 00:11  [ТС]
Она же вроде каждый раз новую копию загружает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2009, 00:11
Помогаю со студенческими работами здесь

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

Подскажите где можно найти Borland C++ Builder или Borland Developer Studio 2006 C++ ? Очень надо.
Подскажите где можно найти Borland C++ Builder или Borland Developer Studio 2006 C++ ? Очень надо.

Русские хелпы по Borland C++ 5.* и Borland C++ Bulder
Подскажите где найти русские хелпы на Borland C++ 5.* и Borland C++ Bulder ...

не могу запустить ехешник ,Borland 5 и Borland 6
вообщем написал прогу , писал в 6рке когда компилю ругается на Build MYBASE.h(348): E2451 Undefined symbol 'ofstream' ...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru