ライブラリをテストしていて、未解決の外部エラーが発生しました。2 つのクラスで A/B テストを行いましたTestBufferPrint
がTestMathLib
、どちらも単純な静的関数を備えています。別のプロジェクトで 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 がプロジェクト フォルダーの下のすべてのファイルをコンパイルしないことです。出力ログをチェックして、すべてのファイルがコンパイルされていることを確認します。