次のヘッダーとソースファイルを使用して、独自の小さな静的ライブラリを作成しました
TestLib.h
#include <iostream>
class TestLib
{
public:
static void HelloTest();
};
TestLib.cpp
#include "TestLib.h"
void TestLib::HelloTest()
{
std::cout << "Hello World this is my .lib!";
}
ライブラリをビルドし、作成したライブラリを新しいプロジェクトに含めて、次のように使用しようとすると:
#include "stdafx.h"
#include <iostream>
#include <TestLib.h>
int _tmain(int argc, _TCHAR* argv[])
{
TestLib::HelloTest();
int i;
std::cin >> i;
return 0;
}
vs2012 で次のエラーが表示されます。
1>TestLib_VS2012.obj : error LNK2019: unresolved external symbol "public: static void __cdecl TestLib::HelloTest(void)" (?HelloTest@TestLib@@SAXXZ) referenced in function _wmain
1>C:\Users\DavidP\Desktop\PROG\TestLib_VS2012\Debug\TestLib_VS2012.exe : fatal error LNK1120: 1 unresolved externals
編集: Marius Bancila のヒントと stijns リンクをたどり、lib を追加した後、プロジェクト設定でリンカ設定へのパスを追加し、vs をリリース モードに設定すると、次のエラーが発生します。
1>TestLib_VS2012.obj : error LNK2001: unresolved external symbol "public: static void __cdecl TestLib::HelloTest(void)" (?HelloTest@TestLib@@SAXXZ)
1>C:\Users\DavidP\Desktop\PROG\TestLib_VS2012\Release\TestLib_VS2012.exe : fatal error LNK1120: 1 unresolved externals
Edit2: Visual Studio をリリース モードに設定して、lib ファイルをコンパイルし、「追加のインクルード ディレクトリ」、「追加のライブラリ ディレクトリ」、および「追加の依存関係」を設定すると、機能します。どうもありがとう。私は今とてもばかげていると感じています...