0

次のヘッダーとソースファイルを使用して、独自の小さな静的ライブラリを作成しました

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 ファイルをコンパイルし、「追加のインクルード ディレクトリ」、「追加のライブラリ ディレクトリ」、および「追加の依存関係」を設定すると、機能します。どうもありがとう。私は今とてもばかげていると感じています...

4

1 に答える 1

1

ライブラリを [プロジェクト プロパティ] > [構成プロパティ] > [リンカー] > [入力] > [追加の依存関係] に追加するか、#pragma ディレクティブを使用します。

#pragma comment(lib, "testlib.lib")
于 2013-09-25T10:50:45.783 に答える