たまたま.objエラーですでに定義されているものを取得しました。これが私のプロジェクトの構造です。
main.cpp
#include "main.h";
main.h
#include <iostream>
#include <string>
#include <sstream>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>
#include "client.cpp"
client.cpp
#ifndef SOCKET_CLIENT_CLASS
#define SOCKET_CLIENT_CLASS
#ifndef BOOST_ASIO_HPP
#include <boost/asio.hpp>
#endif
/*CLASS DEFINITION HERE*/
#endif
これはコンパイラが不平を言っていることです:
main.obj:エラーLNK2005: "public:bool __thiscall SocketClient :: read(int、char *)"(?read @ SocketClient @@ QAE_NHPAD @ Z)はclient.objですでに定義されています
ブーストではなく、私のクラスについて不平を言っていることに注意してください。興味深いのは、client.cppから削除すると、#include <boost/asio.hpp>
main.hにも含まれているためにエラーが発生することです。
ご覧のとおり、私はクラスを二重に定義/含めているわけではなく、main.hに1回だけ含まれています。では、ここで何が起こっているのでしょうか。私はこの答え
を読みましたが、それは二重の包含を期待しているので、それは助けにはなりませんでした。これは単に容赦なく斬首することを意味するので、重複に投票する前にこの事実を無視してください。