Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многократно определенный символ 
:(
    Опции темы
Tralte
Дата 23.5.2018, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.5.2018

Репутация: нет
Всего: нет



Здравствуйте!

У меня в модуле объявлено две функции. Одну из них я вызываю в мэйн. При сборке появились ошибки:
1.
Ошибка    LNK2005    "int __cdecl md5(int,char * *)" (?md5@@YAHHPAPAD@Z) уже определен в main.obj    Project13    C:\Users\Максим\source\repos\Project13\Project13\module.obj    1    
2.
Ошибка    LNK2005    "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl stars(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?stars@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HV12@@Z) уже определен в main.obj    Project13 C:\Users\Максим\source\repos\Project13\Project13\module.obj    1    
3.
Ошибка    LNK1169    обнаружен многократно определенный символ - один или более    Project13    C:\Users\Максим\source\repos\Project13\Debug\Project13.exe    1    


Подозреваю, что дело в переменных, но не могу разобраться в чем дело и как это исправить.

P.S. Код находится в на самом раннем этапе разработки. Сколько бы не было в нём абсурда сейчас, я прошу помочь лишь с тем, о чем я написал выше.

MODULE
Код

#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#define HASH_SIZE 16
#include "Header.h"
 
using namespace std;
 
int md5(int argc, char ** argv)
{
    cout << argv[0] << endl;
    unsigned int rc;
    BCRYPT_ALG_HANDLE hHashAlg;
    BCRYPT_HASH_HANDLE hHash;
    UCHAR HashData[HASH_SIZE];
    string s;
    if (argc>1)
        s = argv[1];
    else
        s = "SuPeR123";
    try {
        rc = BCryptOpenAlgorithmProvider(&hHashAlg, BCRYPT_MD5_ALGORITHM, NULL, 0);
        if (rc != 0)
            throw (BCryptErr(rc, 1u));
 
        rc = BCryptHash(hHashAlg, NULL, 0, (PUCHAR)s.data(), s.size(), HashData, 16);
 
        rc = BCryptCloseAlgorithmProvider(hHashAlg, 0);
        if (rc != 0)
            throw (BCryptErr(rc, 2u));
    }
    catch (BCryptErr &e)
    {
        e.print();
        return e.step;
    }
    cout << hex;
    for (int i = 0; i < HASH_SIZE; i++)
        cout << setw(2) << setfill('0') << (unsigned int)HashData[i];
    cout << endl;
    return 0;
}
 
string stars(int numb, string pass)
{
    //int numb;
    int enter = 13;
    int esc = 27;
    int backspace = 8;
    while (true)
    {
        numb = _getch(); // Помещаем код нажатой клавиши в переменную.
        if (numb == enter)// Установка Enter на прерывание цикла.
        {
            break;
        }
        if (numb == esc)// Установка Esc на закрытие консоли.
        {
            exit(0);
        }
        if (numb == backspace)     // Установка Backspace на удаление символов.
        {
            cout << (char)8 << ' ' << char(8);
            /*Смещение курсора на одну позицию  влево вывод пробела и
            снова смещение курсора влево, то есть при нажатии Backspace
            символ будет стираться, а курсор перемещаеться. */
            if (!pass.empty())
                /*Если строка pass не являеться пустой, то из неё
                можно удалять  последний символ (Иначе закрывалась консоль.)*/
                pass.erase(pass.length() - 1);
            // позволяет удалить последний символ из строки pass
        }
        else
        {
            cout << '*';
            pass += (char)numb;       // Преврашение кода из целого числа в символ.
        }
    }
    return string(pass);
}


MAIN

Код

#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#include "Header.h"
#include "module.cpp"
 
using namespace std;
 
 
int main()
{
    int numb = 0;
    int mode = 0;
    string login;
    string pass;
    setlocale(LC_CTYPE, "Russian");
    cout << "Выберете режим работы программы:\n1.Добавить пользователя\n2.Сменить пароль\n3.Удалить пользователя\n";
    cin >> mode;
    if (mode == 1)
    {
        cout << "Введите Логин\n";
        cin >> login;
        cout << "Введите пароль\n";
        stars(numb, pass);
        cin >> pass;
        cout << login << endl << pass;
    }
    else
        cout << "errer\n";
    return 0;
}

PM MAIL   Вверх
volatile
Дата 24.5.2018, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Tralte @  23.5.2018,  22:39 Найти цитируемый пост)
прошу помочь лишь с тем, о чем я написал выше.

полагаю, эту строку надо убрать:
Цитата(Tralte @  23.5.2018,  22:39 Найти цитируемый пост)
#include "module.cpp"


PM MAIL   Вверх
ss
Дата 24.5.2018, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



надо функ. или в класс запихнуть 
class MyClass
{public:
int md5(int argc, char ** argv)
... далее}

или перед каждой функ. в модуле писать static

static int md5(int argc, char ** argv)


и вообще принято подключать файл.h (.hpp)
возможно #include "module.h"
PM MAIL   Вверх
TheCalligrapher
Дата 9.6.2018, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 9.6.2018

Репутация: нет
Всего: нет



Странная манера включать ".cpp" файлы друг в друга через `#include` приведет именно к такому эффекту - множественно определенные символы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1194 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.