静态链接时出现“多重定义”错误

问题描述 投票:0回答:0

我正在尝试编译这些简单示例程序的链接:

main.cpp:

#include "server.hpp"

int main()
{

}

服务器.hpp:

#ifndef SERVER_HPP
#define SERVER_HPP

#include <boost/asio.hpp>

class Server
{
    boost::asio::io_context context;

    void listen();
};

#endif

服务器.cpp:

#include "server.hpp"

void Server::listen()
{
    static boost::asio::ip::tcp::acceptor acceptor {
        context,
        {boost::asio::ip::tcp::v4(), 1000}
    };
}

我正在使用 gcc 13.1 编译所有这些:

g++ -static-libgcc -static-libstdc++ -std=c++23 .\main.cpp .\server.cpp -lws2_32

但是,由于某种原因我无法理解,我收到此链接器错误:

D:/Programmi/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld .exe: D:/Programmi/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../lib\libstdc++.a(tinfo .o):(.text$ZNKSt9type_infoeqERKS+0x0): `std::type_info::operator==(std::type_info const&) const' 的多重定义; C:\Users\jayok\AppData\Local\Tem

c++ function linker linker-errors multiple-definition-error
© www.soinside.com 2019 - 2024. All rights reserved.