0 / 0 / 1
Регистрация: 07.06.2015
Сообщений: 34

Ошибка компоновки при использовании MPIR

23.01.2017, 12:34. Показов 664. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Имеется программа:
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#include <iostream>
#include <string.h>
#include <string>
//#include <stdio.h> 
//#include <math.h>
//#include <mpir.h>
using namespace std;
 
#pragma warning(disable: 4800)
#include <mpirxx.h>
#pragma warning(default: 4800)
 
 
char* abc = "abcdefghijklmnopqrstuvwxyz";
int m = strlen(abc);
 
mpz_class imod(mpz_class a, mpz_class b)
{
    if (b==0) return -1;
    if (a==0) return 0;
    if ((a>0)&&(b>0))
    {
        a=a%b;
    }
    else if ((a<0)&&(b<0))
    {
        a=-a;
        b=-b;
        a=a%b;
    }
    else if (b<0)
    {
        b=-b;
        a=a%b;
    }
    else if (a<0)
    {
        a=-a;
        if ((a%b)==0) return 0;
        mpz_class c=a/b;
        c=-c-1;
        a=-a-b*c;
    }
    return a;
}
 
mpz_class euclidex(mpz_class a, mpz_class b, mpz_class *x)
{
    if (((a==0)&&(b==0))||(a<0)||(b<0)) return 0;
    if (b==0)
    {
        *x=1;
        return a;
    }
    mpz_class x1, x2, q, r;
    x1=0;
    x2=1;
    while (b!=0)
    {
        q=a/b;
        r=imod(a,b);
        *x=x2-q*x1;
        a=b;
        b=r;
        x2=x1;
        x1=*x;
    }
    *x=x2;
    return a;
}
 
mpz_class euclidex(mpz_class a, mpz_class b)
{
    if (((a==0)&&(b==0))||(a<0)||(b<0)) return 0;
    if (b==0)
    {
        return a;
    }
    mpz_class q, r;
    while (b!=0)
    {
        q=a/b;
        r=imod(a,b);
        a=b;
        b=r;
    }
    return a;
}
 
bool prime(mpz_class n)
{
    if(n==1) return false;
    for( mpz_class i=2;i<=n/2;i++) if((n%i)==0) return false;
    return true;
}
 
void generate_key (mpz_class p, mpz_class q, mpz_class *e, mpz_class *d, mpz_class *n)
{
    *n=p*q;
    mpz_class fn=(p-1)*(q-1);
    bool good=false;
    mpz_class dd=*d;
    while(!good)
    {
        cout<<"E: ";
        cin>>*e;
        mpz_class ee=*e;
        if (prime(ee)&&(ee<fn)&&(euclidex(ee, fn, &dd)==1)) good=true;
    }
    *d=dd;
}
 
int main()
{
    cout<<"RSA\r\nm="<<m<<"\r\n";
    char cOp=' ';
    //cin.ignore();
    while ((cOp!='e')&&(cOp!='E')&&(cOp!='D')&&(cOp!='d')&&(cOp!='g')&&(cOp!='G'))
    {
        cout<<"(E)ncrypt, (D)ecrypt, (G)enerate keys? ";
        cin>>cOp;
    }
    bool bGood=false;
    int l=0;
    string sIn;
    string sOut;
    int i, j, k, counter;
 
    if ((cOp=='e')||(cOp=='E'))
    {
        while (!bGood)
        {
            cout<<"Enter string: ";
            getline(cin, sIn);
            l=sIn.size();
            for (i=0; i<l; i++)
            {
                bGood=false;
                for (j=0; j<m; j++)
                {
                    if (sIn[i]==abc[j]) bGood=true;
                }
                if (!bGood)
                {
                    cout<<"Bad string. ";
                    break;
                }
            }
        }
    }
    else if ((cOp=='g')||(cOp=='G'))
    {
        mpz_class p=0, q=0;
        while (!prime(p))
        {
            cout<<"P: ";
            cin>>p;
        }
        while (!prime(q))
        {
            cout<<"Q: ";
            cin>>q;
        }
 
        mpz_class e, d, n;
        generate_key (p, q, &e, &d, &n);
        cout<<"Public key: {"<<e<<", "<<n<<"}\r\n";
        cout<<"Private key: {"<<d<<", "<<n<<"}\r\n";
    }
    
 
    //sOut.resize(l);
    
 
 
   
 
 
 
    //cout<<sOut<<"\r\n";
    return 0;
}
При попытке построения выдает следующие ошибки:
1>Компоновка...
1>mpirxx.lib(ismpz.obj) : error LNK2019: ссылка на неразрешенный внешний символ __invalid_parameter_noinfo в функции "protected: virtual char const * __thiscall std::ctype<char>::_Do_widen_s(char const *,char const *,char *,unsigned int)const " (?_Do_widen_s@?$ctype@D@std@@MBEPBDPBD0P ADI@Z)
1>mpirxx.lib(ismpznw.obj) : error LNK2001: неразрешенный внешний символ "__invalid_parameter_noinfo"
1>mpirxx.lib(isfuns.obj) : error LNK2001: неразрешенный внешний символ "__invalid_parameter_noinfo"
1>Z:\_tdocs\институт\_5семестр\КМЗИ\VC9\ RSA\Debug\RSA.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://z:\_tdocs\институт\_5семестр\КМЗИ\VC9\RS A\RSA\Debug\BuildLog.htm"
1>RSA - ошибок 4, предупреждений 2
В чем может быть дело? Студия 2008, MPIR 2.2.1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2017, 12:34
Ответы с готовыми решениями:

Возникает ошибка при компоновки проекта VC++
Я решил изучить DirectX 10.Установил DirectX SDK(June 2010),скопировал все lib файлы в C:\Program Files\Microsoft Visual Studio...

Ошибка компоновки при использовании MPIR
Добрый день. При попытке скомпилировать код выдается ряд ошибок &quot;LNK2005 error&quot;. В чем может быть дело? #include &lt;iostream&gt; ...

Координаты компонента при использовании менеджера компоновки
Есть фрейм. Часть его занимает некий компонент(extends JPanel, если важно). По некоторому событию нужно передать в этот компонент...

2
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
25.01.2017, 14:09
Попробуй поставить 15 строку
Цитата Сообщение от zw_Gunslinger Посмотреть сообщение
int m = strlen(abc);
сразу после main().
Вне тела функций нельзя использовать strlen.
0
0 / 0 / 1
Регистрация: 07.06.2015
Сообщений: 34
26.01.2017, 09:35  [ТС]
Цитата Сообщение от SSC Посмотреть сообщение
Вне тела функций нельзя использовать strlen.
Без MPIR'а это работало. В любом случае, не помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2017, 09:35
Помогаю со студенческими работами здесь

Ошибки компоновки LNK2028 и LNK2019 при использовании Windows.h
Взял код для графического интерфейса от сюда: https://www.cyberforum.ru/cpp-cli-winforms/thread1224010.html Создал кнопку, подключил...

Ошибка при использовании vector (в конце, после вывода результатов выскакивает ошибка, но сам результат коректен)
Суть в следующем, мы считываем введеные значения и выводим этот массив Проблема такова что массив выводиться, корректно, но в конце...

Ошибка при использовании ADODB.CONNECTION при работе с dbf-файлом
Добрый день! Написала макрос с использованием adodb.connection. макрос удаляет строки из файла dbf. На моем компьютере работает, поставила...

Ошибка при задаче значения флажку при использовании контрола?!
У меня в форме 6 флажков, так вот для упрощения кода я вставил контролы, когда написал первый раз у меня всё работало, но потом стал...

При использовании кода в модуле ошибка при открытии файла
есть такой простенький код, которій отлично работает в скрипте *.pl use Cwd; my $cwd = getcwd(); $cwd = $cwd ....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru