0

ライブラリをテストしていて、未解決の外部エラーが発生しました。2 つのクラスで A/B テストを行いましたTestBufferPrintTestMathLib、どちらも単純な静的関数を備えています。別のプロジェクトで Main.cpp からそれらを呼び出しますが、そのうちの 1 つだけが機能し、もう 1 つは未解決の外部エラーです。

*error LNK2019: unresolved external symbol "public: static void __cdecl pClickDLL::TestBufferPrint::Print(int)" (?Print@TestBufferPrint@pClickDLL@@SAXH@Z) referenced in function "public: static void __cdecl UnitTests::FeatureDerivationTests::Test(void)" (?Test@FeatureDerivationTests@UnitTests@@SAXXZ)   PClickDll\UnitTests\UnitTests.obj*

ヘッダー ファイルのインクルードが原因であると思われます。しかし、ヘッダーファイルを含めるとエラーが発生する理由がわかりません。

メイン.cpp

pClickDLL::TestMathLib::Print(123);   // works fine
pClickDLL::TestBufferPrint::Print(123);  // unresolved externals

TestBufferPrint および TestMathLib クラス:

CommonLibrary.h:

#pragma once
#include <vector>

namespace pClickDLL
{
class TestBufferPrint
    {
    public:
        static void Print(int a);
    };
}

CommonLibrary.cpp:

#include "../inc/CommonLibrary.h"

namespace pClickDLL
{
    void TestBufferPrint::Print(int a)
    {
        return;
    }
}

TestMathLib.cpp

#include "TestMathLib.h"
#include <iostream>
namespace pClickDLL
{
    void TestMathLib::Print(int x)
    {
        std::cout << x;
    }
}

TestMathLib.h:

#pragma once
namespace pClickDLL
{
    class TestMathLib
    {
    public:
        static void Print(int x);
    };
}

更新:

この問題は解決しました。以下の説明を確認してください。問題は、Visual Studio がプロジェクト フォルダーの下のすべてのファイルをコンパイルしないことです。出力ログをチェックして、すべてのファイルがコンパイルされていることを確認します。

4

0 に答える 0