Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/41: Рейтинг темы: голосов - 41, средняя оценка - 4.76
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125

Подключение сторонних библиотек

15.11.2019, 00:42. Показов 9252. Ответов 39

Студворк — интернет-сервис помощи студентам
Задание: реализовать SRP-6a
Функцию хэширования нашел, осталось понять как подключить библиотеку с BigInteger ом
Кто подскажет как это делается в visual studio?
https://github.com/faheel/BigInt
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2019, 00:42
Ответы с готовыми решениями:

Подключение сторонних библиотек
Я пишу в Visual Studio и в некоторый проектах использую SDL. У меня есть папка с библиотеками и инклудами SDL, я ее подключаю в...

Установка сторонних библиотек
Здравствуйте. Мне нужна библиотека по нейросетям. В интернете нашел вот такую библиотеку. http://www.nongnu.org/libann/doc/installing.html ...

Использование сторонних библиотек
Всем салют! Я новичок на этом форуме, а также в языке Си++. У меня возникли вопросы. Дело в том, что до Си++ я кодил на PHP, причем...

39
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
15.11.2019, 02:11
rayzor48, по указанной вами ссылке всё же вроде написано.
Положите скачанный hpp-файл рядом с вашими исходниками.
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
15.11.2019, 02:48  [ТС]
Эх, если бы все было так просто... У меня почему-то не работает (

Добавлено через 3 минуты
Я побывал платить с .h и.cpp библиотеки (из других готов) у них студия ругалась, мол неверная ссылка и целая кракозябра из русских символов. А тут пишет что-то типо "не могу найти реализацию"(точно не помню) комп уже выключил

Добавлено через 5 секунд
Я побывал платить с .h и.cpp библиотеки (из других готов) у них студия ругалась, мол неверная ссылка и целая кракозябра из русских символов. А тут пишет что-то типо "не могу найти реализацию"(точно не помню) комп уже выключил
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
15.11.2019, 04:51
Цитата Сообщение от rayzor48 Посмотреть сообщение
не работает
Что такое "не работает"?

По ссылке ясно написано, что это header-only library. То есть "библиотеки" как таковой тут нет вообще. Кроме включения заголовочного файла больше ничего делать не нужно.

Цитата Сообщение от rayzor48 Посмотреть сообщение
пишет что-то типо "не могу найти реализацию"(точно не помню) комп уже выключил
Ну, видать, не судьба...
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
15.11.2019, 11:15  [ТС]
Вот так не работает:
Ошибка LNK2019 ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class BigInt const &)" (??6@YAAAV?$basic_ostream@DU?$char_trait s@D@std@@@std@@AAV01@ABVBigInt@@@Z) в функции _main

Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: __thiscall BigInt::BigInt(__int64 const &)" (??0BigInt@@QAE@AB_J@Z) в функции _main

Добавлено через 28 секунд
C++
1
2
    BigInt big1 = 1234567;
    std::cout << big1;
при этом добавил ток эти 2 строки

Добавлено через 13 секунд
C++
1
2
    BigInt big1 = 1234567;
    std::cout << big1;
при этом добавил ток эти 2 строки
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
15.11.2019, 11:55
rayzor48, судя по всему вы не тот файл скачали и подключаете. Автор в документации пишет вот про этот файл: https://github.com/faheel/BigI... BigInt.hpp
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
15.11.2019, 11:59  [ТС]
Файл скачал тот, сейчас, на свежую голову покапался.
Потом студия ругалась мол не могу найти atoi(что решилось после включения стрингов в hpp файле проекта)
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
15.11.2019, 12:04
Цитата Сообщение от rayzor48 Посмотреть сообщение
Файл скачал тот
Тогда или сейчас? Ошибки LNK2019 могли возникнуть, если скачать и пытаться подключать файл https://github.com/faheel/BigI... BigInt.hpp, это другой файл, не тот, что я выше показал по ссылке. В нем нет определений всех функций этого класса и они никак не подключаются. Из-за этого и возникали ошибки LNK2019, нет определений - получайте LNK2019. В показанном выше по ссылке определения включены внутри, поэтому с ним LNK2019 не возникает.
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
15.11.2019, 12:07  [ТС]
Тот что по ссылке
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.11.2019, 12:12
Цитата Сообщение от rayzor48 Посмотреть сообщение
Кто подскажет как это делается в visual studio?
родной студийный компилятор сие творение не тянет.
нужен либо gcc, а лучше clang.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
15.11.2019, 12:35
Цитата Сообщение от XLAT Посмотреть сообщение
родной студийный компилятор сие творение не тянет.
У меня все прекрасно работает в VS 2017
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.11.2019, 12:53
Цитата Сообщение от DrOffset Посмотреть сообщение
У меня все прекрасно работает в VS 2017
у меня прекрасно работает на любом mingw gcc компиляторе

ну, в студии у меня тож заработает, если я clang в студию поставлю.

Цитата Сообщение от rayzor48 Посмотреть сообщение
Ошибка LNK2019
подключите все хедеры, которые будут нужны:
например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "constructors/constructors.hpp"
#include "functions/conversion.hpp"
#include "functions/math.hpp"
#include "operators/binary_arithmetic.hpp"
#include "operators/io_stream.hpp"
 
int main(int argc, char** argv)
{   
    std::string s1("25");
    BigInt m1(s1);
    BigInt m2("25");
    std::cout << m1*m2 << "\n";
    
    std::cin.get();
    return 0;
}
и укажите путь к инклудам из распакованного архива.
это всё что нужно.
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.11.2019, 13:19
Цитата Сообщение от DrOffset Посмотреть сообщение
У меня все прекрасно работает в VS 2017
vs2019 тулсет 142

Как исправить?

у меня, например, вот эту хрень не ест:
C++
204
if (num1 == 0 or num2 == 0) // из math.hpp
а у вас это родной cl.exe компилирует?
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
15.11.2019, 13:37
Цитата Сообщение от XLAT Посмотреть сообщение
Как исправить?
Перед <BigInt.hpp> подключить <string>

Добавлено через 6 минут
Цитата Сообщение от XLAT Посмотреть сообщение
подключите все хедеры, которые будут нужны
Автор библиотеки использует несколько странную модель для своих исходников. В репозитории у него лежат эти файлы отдельно, но в в релизе он их объединяет и выкладывает измененный BigInt.hpp. Если вы посмотрите мое объяснение выше, то поймете что к чему. А вот ТС совершенно точно лукавит, когда утверждает, что скачал именно тот объединенный файл, если бы он это сделал, то не получил бы ошибок линковки.

Цитата Сообщение от XLAT Посмотреть сообщение
а у вас это родной cl.exe компилирует?
Он это компилирует при подключении <ciso646>. Надо полагать <string> цепляет его где-то в своих недрах.
1
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
15.11.2019, 13:48  [ТС]
Я же вверху писал, что в BigInt после подключения string все заработало.

Кстати, никто не подскажет как сгенерировать BigInt рандомно и чтоб он был простым числом?
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.11.2019, 14:59
Лучший ответ Сообщение было отмечено rayzor48 как решение

Решение

Цитата Сообщение от rayzor48 Посмотреть сообщение
Кстати, никто не подскажет как сгенерировать BigInt рандомно
для встроенных типов примерно так:
1. рандомно берете число.
2. это число будет началом диапазона, в котором вы будете искать простое число.
3. верхней границы нет, ищете пока не находите!

4.
Ищете, например вот тут такими алгоритмами:
один из них продвинутый алгоритм Ферма для поиска простых чисел.
https://ideone.com/KV9QyK

5.
если нужно ну очень большое простое число,
то
C++
1
2
BigInt operator/(const long long&) const;
BigInt operator%(const long long&) const;
в помощь.

в предложенные выше алгоритмы внедряет энтот BigInt .

Не вижу тут никаких сложных препятствий.

Добавлено через 7 минут
вот простейший генератор больших случайных чисел:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int rrand(int range_min, int range_max)
{   return rand() % (range_max - range_min + 1) + range_min;
}
 
std::string generator(size_t length)
{   
    std::string alphabet = "0123456789";
    
    std::string num(length, '*');
    for(int  i  = 0; i < length; i++)
    {   num[i] = alphabet[rrand(0, alphabet.size()-1)];
        }
    return num;
}
но смотрите в BigInt либу там есть хедер для работы с рандомом.
0
18 / 14 / 4
Регистрация: 02.04.2017
Сообщений: 125
15.11.2019, 18:07  [ТС]
Попытался разобрать пример (по вашей ссылке) и студия заворчала:
Ошибка C3861 __builtin_clzll: идентификатор не найден

Предупреждение C4244 аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных

Ошибка (активно) E0020 идентификатор "__builtin_clzll" не определен
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.11.2019, 18:17
мои эксперименты тут:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
///---------------------------------------------------------------------------|
/// Поиск случайного большого числа.
///---------------------------------------------------------------------------:
#include "constructors/constructors.hpp"
#include "functions/conversion.hpp"
#include "functions/math.hpp"
#include "operators/binary_arithmetic.hpp"
#include "operators/io_stream.hpp"
#include "functions/random.hpp"
#include <ctime>
 
typedef BigInt ntype;
 
////////////////////////////////////////////////////////////////////////////////
struct Task_my
{
    ntype result;
    Task_my(ntype from)
    {
        for (ntype i = from; true; i++)
        {
            if (is_simple(i))
            {
                result = i;
                break;
            }
        }
    }
 
    bool is_simple(ntype n)
    {
        for (ntype i = 3; i < sqrt(n); i += 2)
        {
            if (n % i == 0) return false;
        }
        return true;
    }
};
 
///////////////////////////////////////////////////////////////////////////////
#define LOG2(X) ((unsigned) (8*sizeof (unsigned long long) -\
    __builtin_clzll((X)) - 1))
 
struct Task_ferma
{
    size_t nn;
    ntype result;
    Task_ferma(ntype from, size_t _nn) : nn(_nn - 1)
    {
        for (ntype i = from; true; i += 2)
        {
            if (ferma(i))
            {
                result = i;
                break;
            }
        }
    }
 
    bool ferma(ntype x)
    {
        //ntype k = LOG2(x) + 2;
        ntype k = sqrt(x);
        for (ntype i = 0; i < 100; i++)
        {
            ntype a = (big_random(nn) % (x - 2)) + 2;
            if (gcd(a, x) != 1)        return false;
            if (pows(a, x - 1, x) != 1)  return false;
        }
        return true;
    }
    ntype gcd(ntype a, ntype b)
    {
        if (b == 0) return a;
        return gcd(b, a % b);
    }
    ntype pows(ntype a, ntype b, ntype m)
    {
        if (b == 0)
            return 1;
        if (b % 2 == 0)
        {
            ntype t = pows(a, b / 2, m);
            return mul(t, t, m) % m;
        }
        return (mul(pows(a, b - 1, m), a, m)) % m;
    }
    ntype mul(ntype a, ntype b, ntype m)
    {
        if (b == 1)
            return a;
        if (b % 2 == 0)
        {
            ntype t = mul(a, b / 2, m);
            return (2 * t) % m;
        }
        return (mul(a, b - 1, m) + a) % m;
    }
};
 
 
int rrand(int range_min, int range_max)
{
    return rand() % (range_max - range_min + 1) + range_min;
}
 
std::string generator(size_t length)
{
    std::string alphabet = "0123456789";
    std::string pass(length, '*');
    pass[0] = alphabet[rrand(1, alphabet.size() - 1)];
 
    for (size_t i = 1; i < length - 1; i++)
    {
        pass[i] = alphabet[rrand(0, alphabet.size() - 1)];
    }
    pass.back() = '3';
 
    return pass;
}
 
#define PERFOMANCE_START {float start  = clock() / (float)60000;
#define PERFOMANCE_END    float finish = clock() / (float)60000;\
            std::cout << "time: " << finish - start << " minute."\
                      << std::endl;}
 
///---------------------------------------------------------------------------|
/// Старт.
///---------------------------------------------------------------------------:
int main(int argc, char** argv)
{
    srand((unsigned)time(NULL));
 
    std::string my = generator(18);
    std::cout << "start number = " << my << "\n";
    BigInt a(my);
 
    PERFOMANCE_START
        std::cout << "ferma        = ... wait ...";
    Task_ferma task(a, my.size());
    std::cout << "\rferma        = " << task.result << "     ";
    PERFOMANCE_END
 
        BigInt a1(my);
        
    PERFOMANCE_START
      std::cout << "my           = ... wait ...";
    Task_my task(a1);
    std::cout << "\rmy           = " << task.result << "     ";
    PERFOMANCE_END
 
        std::cin.get();
    return 0;
}

проверить число можно тут:
проверка простых чисел

не сомневаюсь что существуют более быстрые алгоритмы поиска простых чисел,
и хрустальный шар говорит мне что они основываются в основном на таблицах.
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.11.2019, 18:43
Цитата Сообщение от rayzor48 Посмотреть сообщение
Ошибка C3861 __builtin_clzll: идентификатор не найден
там машинный код даже не у всех процессоров Intel есть.
можно обойтись и без неё(функции).

на скриншоте во втором проходе фигня,

тут нужно исправить!
C++
20
        for (ntype i = from; true; i += 2)
просто проскакивает проверка на четные делители.
пока крутил, забыл вернуть, можно сказать очепятка

и будет тогда все ок!

Добавлено через 21 минуту
вот ещё более крутой генератор простых чисел:
https://github.com/kimwalisch/primesieve
в 12 потоках может давать скорость в 50 раз быстрее.

но нужно несколько потрудиться, чтобы натянуть на это бигнамбер
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
15.11.2019, 18:44
Цитата Сообщение от XLAT Посмотреть сообщение
__builtin_clzll
Аналог для VS: _BitScanReverse
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2019, 18:44
Помогаю со студенческими работами здесь

Графика без сторонних библиотек
Интересует следующий вопрос: можно ли без сторонних библиотек, чистым С++ вывести пиксели разных цветов или их массивы? К тому же очень...

Скрытие warning сторонних статических библиотек в g++
Здравствуйте! Я статически подключаю библиотеку (liblibrary.a), и тут компилятор gnu g++ выдает мне предупреждение на одно из мест в...

Почему включение сторонних библиотек не рекомендуется?
Почему нежелательно включать в программу под linux ну например ncurses.h (сторонняя популярная библиотека)? Почему нужно включать только...

Отключение предупреждений при подключении сторонних библиотек
Доброго времени суток! возник вопрос - чисто теоретический - допустим, что я подключил библиотеку, криво-написанную, но работающую,...

Как узнать частоту звука без сторонних библиотек
кто нибудь знает как в работать со звуком без сторонних библиотек? мне нужно чтобы во время проигрывания звука можно было узнать его...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru