Ошибка: duplicate symbol … in: ./Debug/tinyxml2.cpp.o в Codelite [закрыт]

96
05 марта 2021, 05:10
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Уже была подобная ошибка, когда подключал curl/curl.h, тогда надо было ввести в Linker -lcurl, а-ля g++ -o test filepath -lcurl (Mac OSX). Понимаю, что ошибка из-за того, нужно подключить библиотеку в самом линкере, но не понимаю какую именно. Вот перечень инклудов:

#include "tinyxml2.h"
#include <new>      // yes, this one new style header, is in the Android SDK.
#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
#   include <stddef.h>
#   include <stdarg.h>
#else
#   include <cstddef>
#   include <cstdarg>
#endif

tinyxml2.h - существующий файл в проекте, если что.

Подробней ниже: main.cpp:

#include <iostream>
#include <string>
#include <tinyxml2.h>
#include <tinyxml2.cpp>
#include <curl/curl.h>
using namespace tinyxml2;
using namespace std;
static string buffer;
static int writer(char* data, size_t size, size_t nmemb, string* buffer)
{
    int result = 0;
    if(buffer != NULL) {
    buffer->append(data, size * nmemb);
    result = size * nmemb;
    }
    return result;
}

int main(int argc, char** argv)
{
    char errorBuffer[CURL_ERROR_SIZE];
    CURL* curl;
    CURLcode res;
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.cbr-xml-daily.ru/daily_eng_utf8.xml");
        curl_easy_setopt(curl, CURLOPT_NOPROXY, NULL);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
        res = curl_easy_perform(curl);
        if(res == CURLE_OK) {
            cout << "Downloaded" << endl;
        } else {
            cout << "error: " << errorBuffer << endl;
        }
    } else {
        cout << "Оставьте комментарий пж";
    }
    curl_easy_cleanup(curl);
    return 0;
}

tinixml2.cpp есть просьба загуглить ибо 2500 строк tinixml.h аналогично

То что пишет терминал:

> /bin/sh -c '/usr/bin/make -j8 -e -f  Makefile'
----------Building project:[ Money - Debug ]----------
/usr/bin/llvm-g++ -o ./Debug/Money @"Money.txt"   -lcurl -lncurses
duplicate symbol __ZN8tinyxml211XMLDocument8SetErrorENS_8XMLErrorEiPKcz in:
    ./Debug/tinyxml2.cpp.o
    ./Debug/main.cpp.o
duplicate symbol __ZN8tinyxml210XMLPrinter5PrintEPKcz in:
    ./Debug/tinyxml2.cpp.o
    ./Debug/main.cpp.o
duplicate symbol __ZN8tinyxml210XMLPrinter13PushAttributeEPKcx in:
    ./Debug/tinyxml2.cpp.o
    ./Debug/main.cpp.o
duplicate symbol __ZNK8tinyxml210XMLElement14Int64AttributeEPKcx in:
    ./Debug/tinyxml2.cpp.o
    ./Debug/main.cpp.o
duplicate symbol __ZN8tinyxml27XMLUtil7ToInt64EPKcPx in:
    ./Debug/tinyxml2.cpp.o
    ./Debug/main.cpp.o
ld: 227 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Debug/Money] Error 1
make: *** [All] Error 2
====1 errors, 0 warnings====
Answer 1

Плохо вы читали документацию. Отрывок из документации Readme.md:

The top of tinyxml2.h even has a simple g++ command line if you are are Unix/Linux/BSD and don't want to use a build system.

g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe

Вместо xmltest.cpp пишете main.cpp, вместо gccxmltest.exe название будущей вашей программы. Из main.cpp уберите инклюд tinyxml2.cpp

READ ALSO
Не работает mouseEvent&#39;ы в QQuickItem

Не работает mouseEvent'ы в QQuickItem

У меня есть кастомный QQuickWindow (CWindow), в котором реализованы все mouseEvent'ыТак же есть кастомный QQuickItem (CItem) в котором также есть mouseEvent'ы

89
Как добавить условия try catch для цикла do while?

Как добавить условия try catch для цикла do while?

Хочу выполнять цикл бесконечно если есть ошибка catch, если ошибки нету пусть цикл будет завершен

166
Regexp. Передача регистра заменяемой буквы

Regexp. Передача регистра заменяемой буквы

Имеется слово, допустим, Cinderella, где Ci - превратится в Si, если введенное слово - cinderella, то ci превратится в si

108
Почему выбрасывается исключение?

Почему выбрасывается исключение?

Если ввести не число, то выводится строка "Введите число", а потом выбрасывается исключение в строке cin >> delaySec в блоке catch:

107