Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 5

DLL на C++

11.12.2010, 22:12. Показов 959. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчани!
У меня собственно такой вопрос:
Не могли бы Вы написать код для DLL на C++ который нужен для выполнения такого задания - перемножить два беззнаковых числа длиной 64 бита каждое.
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.12.2010, 22:12
Ответы с готовыми решениями:

Добавление своей dll в список dll подгружаемых процессом чужого процесса
Вообще вопрос такой,как можно внедрить свою dll в список Import чужого не запущенного процесса?Не изменяя структуры файла.

Точка входа в процедуру InterlockedCompareExchange64 не найдена в библиотеке DLL KERNEL32.DLL
День добрый! При запуске моей программы (много моего кода + много разных сторонних dll) на WinXP SP2, получаем соответствующую ошибку...

Отсутствует libstdc++-6.dll и libgcc_s_sjlj-1.dll при компиляции
Открыл на ноутбуке VS 2019, ни одна программа не компилируется, выдает ошибку с отсутствием файлов libstdc++-6.dll и libgcc_s_sjlj-1.dll....

6
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
12.12.2010, 08:24
вот тебе пример:
C++
1
2
3
4
5
// p.cpp
int f(int x)
{
    return x*x;
}
C++
1
2
3
4
5
6
7
8
9
// pp.cpp
#include <iostream>
int f(int x);
int main()
{
    int y = f(3);
    std::cout << y << '\n';
    return 0;
}
компилируем, связываем и запускаем:
Code
1
2
3
4
5
C:\Documents and Settings\admin\Рабочий стол>g++ -shared -g p.cpp -olibp.dll
C:\Documents and Settings\admin\Рабочий стол>g++ -g pp.cpp -lp -L. -orun
C:\Documents and Settings\admin\Рабочий стол>run
9
C:\Documents and Settings\admin\Рабочий стол>
Bash
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
30
31
32
C:\Documents and Settings\admin\Рабочий стол>gdb run
Reading symbols from C:\Documents and Settings\admin\╨рсюўшщ ёЄюы/run.exe...done
.
(gdb) set disassembly-flavor intel
(gdb) disas main
Dump of assembler code for function main:
   0x00401318 <+0>:     push   ebp
   0x00401319 <+1>:     mov    ebp,esp
   0x0040131b <+3>:     and    esp,0xfffffff0
   0x0040131e <+6>:     sub    esp,0x20
   0x00401321 <+9>:     call   0x413380 <__main>
   0x00401326 <+14>:    mov    DWORD PTR [esp],0x3
   0x0040132d <+21>:    call   0x41c95c <_Z1fi>
   0x00401332 <+26>:    mov    DWORD PTR [esp+0x1c],eax
   0x00401336 <+30>:    mov    eax,DWORD PTR [esp+0x1c]
   0x0040133a <+34>:    mov    DWORD PTR [esp+0x4],eax
   0x0040133e <+38>:    mov    DWORD PTR [esp],0x4740c0
   0x00401345 <+45>:    call   0x4485a8 <_ZNSolsEi>
   0x0040134a <+50>:    mov    DWORD PTR [esp+0x4],0xa
   0x00401352 <+58>:    mov    DWORD PTR [esp],eax
   0x00401355 <+61>:    call   0x4696d8 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c>
   0x0040135a <+66>:    mov    eax,0x0
   0x0040135f <+71>:    leave
   0x00401360 <+72>:    ret
End of assembler dump.
(gdb) disas f
Dump of assembler code for function _Z1fi:
   0x0041c95c <+0>:     jmp    DWORD PTR ds:0x47b35c
   0x0041c962 <+6>:     nop
   0x0041c963 <+7>:     nop
End of assembler dump.
(gdb)
видно, что тело функции f не включено в исполняемый файл программы.
1
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 5
13.12.2010, 01:59  [ТС]
а Вы не могли бы обьяснить поподробней что это за код Bash?
я просто новичок во всем этом, но для умножения 2-х чисел такой сложный алгоритм?
это связано с тем что числа 64-х битные??
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.12.2010, 02:10
Цитата Сообщение от Ramore Посмотреть сообщение
а Вы не могли бы обьяснить поподробней что это за код Bash?
Это просто вывод консоли, оформленный в тэге BASH.

Цитата Сообщение от Ramore Посмотреть сообщение
для умножения 2-х чисел такой сложный алгоритм?
Для вычисления алгоритм простой:
Цитата Сообщение от Aye Aye Посмотреть сообщение
int f(int x)
{
return x*x;
}
Все остальное -- компиляция DLL и непосредственно программы, плюс дебаг, чтобы показать, что в коде программы нет кода, вычисляющего квадрат числа, а он находится в DLL. (Да-да, тут не ваша задача, а пример аналогичной, но возвращающей квадрат числа со знаком, скорее всего 32-х битного.)
0
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
13.12.2010, 18:54
а 64 битные целые без знака можно так посчитать:
C++
1
2
3
4
unsigned long long int ullimul(unsigned long long int x, unsigned long long int y)
{
    return x * y;
}
на моей машине тип long long int занимает 64 бита. Вот и все.
1
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 5
13.12.2010, 22:43  [ТС]
Так получается, мне не надо писать то что находится в области кода Bash?
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
13.12.2010, 22:49
Да, просто надо правильно собрать. Мух отдельно, котлеты отдельно.

Не по теме:

Цитата Сообщение от Aye Aye Посмотреть сообщение
а 64 битные целые без знака можно так посчитать:
C++
1
2
3
4
unsigned long long int ullimul(unsigned long long int x, unsigned long long int y)
{
    return x * y;
}
на моей машине тип long long int занимает 64 бита. Вот и все. :)
c++0x гарантирует long long'у 64 бит.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2010, 22:49
Помогаю со студенческими работами здесь

Как узнать путь к загруженной DLL из самой DLL?
Создаю небольшую программку в папке c:/test/app/, есть DLL в папке c:/test/dll/. В коде самой dll, после её подгрузки в программу, можно...

Запись из внедренной dll в другую dll этого процесса
main.cpp #include &lt;Windows.h&gt; extern int writeprocess(); DWORD WINAPI MainThread(LPVOID lpParam) { ...

Dll файл в exe файле. Вшить dll libcurl
Проблема такая что приходится таскать всегда libcurl.dll с собой. Надо все носить в одном exe. Enigma Virtual Box использовать нельзя,...

Как узнать зависимость DLL-ки от других DLL-ек?
Есть DLL-ка, она в свою очередь подгружает другие DLL-ки, а так же использует соответственно тулфейн свого компилятора и тд. Есть какая...

Не загружается DLL. Правила написания DLL
Добрый день! Вопрос в следующем. Есть код на Си++ с применением классов, раскиданных по нескольким исходникам. Код рабочий, gcc под с++11...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru