Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
dobroivan
0 / 0 / 1
Регистрация: 15.03.2016
Сообщений: 23
#1

Multiple definition of function - linker error - C++

31.05.2016, 05:02. Просмотров 209. Ответов 1
Метки нет (Все метки)

Жалуется линкер на multiple definition функции TryParse, лог выглядит страшно непонятно. (В какой тег такое лучше засовывать, кстати?)

Кликните здесь для просмотра всего текста
CMakeFiles/HttpServer.dir/src/Net/Http/HttpClient.cpp.o: In function `Event<Closeable, void, void>::operator()()':
/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: multiple definition of `TryParse(std::string const&, HttpMethod&)'
CMakeFiles/HttpServer.dir/src/Net/Http/HttpServer.cpp.o:/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: first defined here
CMakeFiles/HttpServer.dir/src/Net/Http/HttpMessage/HttpSimpleRequest.cpp.o: In function `__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::string const, HttpMethod> > >::new_allocator()':
/usr/include/c++/4.8/bits/stl_tree.h:1411: multiple definition of `TryParse(std::string const&, HttpMethod&)'
CMakeFiles/HttpServer.dir/src/Net/Http/HttpServer.cpp.o:/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: first defined here
CMakeFiles/HttpServer.dir/src/Net/Http/HttpMessage/HttpFullRequest.cpp.o: In function `__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::string const, HttpMethod> > >::new_allocator()':
/usr/include/c++/4.8/bits/stl_tree.h:1411: multiple definition of `TryParse(std::string const&, HttpMethod&)'
CMakeFiles/HttpServer.dir/src/Net/Http/HttpServer.cpp.o:/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: first defined here
CMakeFiles/HttpServer.dir/src/Net/Http/HttpMessage/HttpSimpleResponse.cpp.o: In function `__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::string const, HttpMethod> > >::new_allocator()':
/usr/include/c++/4.8/bits/stl_tree.h:1411: multiple definition of `TryParse(std::string const&, HttpMethod&)'
CMakeFiles/HttpServer.dir/src/Net/Http/HttpServer.cpp.o:/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: first defined here
CMakeFiles/HttpServer.dir/src/Net/Http/HttpMessage/HttpFullResponse.cpp.o: In function `__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::string const, HttpMethod> > >::new_allocator()':
/usr/include/c++/4.8/bits/stl_tree.h:1411: multiple definition of `TryParse(std::string const&, HttpMethod&)'
CMakeFiles/HttpServer.dir/src/Net/Http/HttpServer.cpp.o:/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: first defined here
CMakeFiles/HttpServer.dir/src/Net/Http/HttpMessage/Base/HttpRequest.cpp.o: In function `std::_Rb_tree<std::string, std::string, std::_Identity<std::string>, std::less<std::string>, std::allocator<std::string> >::_Rb_tree(std::_Rb_tree<std::string, std::string, std::_Identity<std::string>, std::less<std::string>, std::allocator<std::string> > const&)':
/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: multiple definition of `TryParse(std::string const&, HttpMethod&)'
CMakeFiles/HttpServer.dir/src/Net/Http/HttpServer.cpp.o:/home/username/Dropbox/ClionProjects/HttpServer/src/Net/Http/HttpMessage/Base/../../HttpMethod.h:18: first defined here


HttpVersion.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef HTTPSERVER_HTTPVERSION_H
#define HTTPSERVER_HTTPVERSION_H
 
#include <string>
#include <map>
 
enum class HttpVersion
{
    Http09, Http10
};
 
bool TryParse(const std::string& str, HttpVersion& result);
 
#endif //HTTPSERVER_HTTPVERSION_H
HttpVersion.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "HttpVersion.h"
 
bool TryParse(const std::string& str, HttpVersion& result){
 
    const std::map<std::string, HttpVersion> strMap = {
            {"HTTP/0.9", HttpVersion::Http09 },
            {"HTTP/1.0", HttpVersion::Http10 }
    };
    auto resultIt = strMap.find(str);
    if (resultIt == strMap.end())
        return false;
    result = resultIt->second;
    return true;
}

Не по теме:

Я знаю, что "одна тема - один вопрос", но если есть более красивые решения по сопоставлению строки с enum, то напишите.

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2016, 05:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Multiple definition of function - linker error (C++):

Linker error - C++
При попытке скомпилить программу выдаёт ошибки: undefined reference to `InternetOpenA@20' undefined reference to...

Linker Fatal Error: Could not open *.exe (error code 5) - C++ Builder
помогите отладить программу выдает ошибку: Fatal: Could not open C:\Program Files (x86)\Borland\CBuilder6\Projects\Project1.exe...

[Linker Fatal Error] Fatal: Could not open ~CBuilder6\Projects\Project1.exe (error code 5) - C++ Builder
Инсталировал с++ builder 6. Запустил програму и попробывал компилировать пустую форму, чтобы протестировать програму. Она должна была мне...

Linker Error - C++ Builder
Доброго времени суток. Недавно начал изучать С++. И вот наткнулся на проблему. При запуске программы пишет такую ошибку. Сначала писал...

Linker Error - C++ Builder
Доброго времени суток, дамы и господа! У меня такая вот проблема: я написала программу для получения погоды с Яндекса с использованием...

Linker Error 5 - C++ Builder
что за ошибка, как его исправыть Fatal: Could not open C:\Documents and Settings\prgrmmr\My Documents\RAD...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
31.05.2016, 09:10 #2
В выдаче линкера даже написано, где определены тела функции. В чём проблема-то?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2016, 09:10
Привет! Вот еще темы с ответами:

Linker Error - C++ Builder
Помогите исправить ошибку в buildere 6 !!! 'C:\DOCUMENTS AND SETTINGS\АДМИНИСТРАТОР\РАБОЧИЙ СТОЛ\SIMPLE PAINT 1.0\SRC\MAIN.OBJ' contains...

Linker Fatal Error ??? - C++ Builder
Пытаюсь освоить C++ Builder 6, система win 7, При запуске пустого проэкта ( который создается автоматически) появляется Fatal: Could not...

Linker Fatal Error - C++ Builder
После переноса документов на другой комп с повторной установкой С++ Builder 6 проект перестал компилироваться. Вылезают ошибки на подобии &quot;...

Error: a function-definition is not allowed here before '{' token| - C++
Всем привет. Вот переписал код из учебника под названием &quot;Дирк Хенкеманс и Марк Ли программирование на c++&quot;. Код из игры под название...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru