0

eclipse でプロジェクトをクロスコンパイルしようとしていますが、エラーが発生して気が狂いそうになります。インクルージョンとライブラリのヘッダーが必要です。画像では、プロジェクト ツリーを見ることができます。 写真

問題は、使用しているパスがコンパイルに間違っている理由を理解できないことです。何かアドバイスはありますか?

前もって感謝します、

これは、含めるとエラーが発生する TestUtils.cpp です。

#include "TestUtils.h"

#include <ibrdtn-0.8.0/utils/Utils.h> //sucks

CPPUNIT_TEST_SUITE_REGISTRATION (TestUtils);

void TestUtils::setUp()
{
}

void TestUtils::tearDown()
{
}

void TestUtils::tokenizeTest()
{
    using namespace dtn::utils;
    CPPUNIT_ASSERT(Utils::tokenize(":", "").empty());
    CPPUNIT_ASSERT(Utils::tokenize(":", "::").empty());
    CPPUNIT_ASSERT_EQUAL((int)Utils::tokenize(":", ":a:test::", 2).size(), 2);
    CPPUNIT_ASSERT_EQUAL((int)Utils::tokenize(":", ":a:test::b::", 2).size(), 3);
    //TODO how should the added string in the last item look like? "b::" or ":b::" or "::b::"
    CPPUNIT_ASSERT(Utils::tokenize(":", ":a:test::b::", 2)[2] == "b::");
    CPPUNIT_ASSERT_EQUAL((int)Utils::tokenize(":", ": :", 1).size(), 1);
    CPPUNIT_ASSERT_EQUAL((int)Utils::tokenize(":", ":    :t e s t: ").size(), 3);
}

エラーは /tests/utils/TestUtils.cpp:10:38: warning: ibrdtn-0.8.0/utils/Utils.h: No such file or directory です

そして存在しないと思われる Utils.h がこれ

#ifndef UTILS_H_
#define UTILS_H_


#include "ibrdtn/data/Bundle.h"
#include "ibrdtn/data/CustodySignalBlock.h"
#include "ibrdtn/data/StatusReportBlock.h"
#include "ibrdtn/data/PayloadBlock.h"

namespace dtn
{
    namespace utils
    {
        class Utils
        {
        public:
            static void rtrim(std::string &str);
            static void ltrim(std::string &str);
            static void trim(std::string &str);

            static vector<string> tokenize(std::string token, std::string data, size_t max = std::string::npos);
            static double distance(double lat1, double lon1, double lat2, double lon2);

            static void encapsule(dtn::data::Bundle &capsule, const std::list<dtn::data::Bundle> &bundles);
            static void decapsule(const dtn::data::Bundle &capsule, std::list<dtn::data::Bundle> &bundles);

        private:
            static void encapsule(ibrcommon::BLOB::Reference &ref, const std::list<dtn::data::Bundle> &bundles);
            static double toRad(double value);
            static const double pi;
        };
    }
}

#endif /*UTILS_H_*/
4

1 に答える 1

0
  • 最初の問題は、Eclipse によって参照されるインクルードの一部ではないため、 .""ではなく引用符で囲む必要があり<>ます。

  • 第二に、包含パスが正しくありません。ibrtn考慮していないサブフォルダーがあります。したがって、メインの親フォルダーを持つ代わりに、包含パスは次のようにする必要があります#include "ibrdtn/utils/Utils.h"

これらの 2 つの項目を修正すれば、ビジネスを開始できるはずです。

于 2013-01-18T16:04:00.670 に答える