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

DLL в borland c++

28.07.2009, 23:53. Показов 2874. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru