VS2012自提供静态库会引发链接器错误

时间:2013-09-25 10:12:06

标签: c++ visual-studio-2012 static-libraries

我已经编写了自己的小静态库,其中包含以下标题和源文件

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!";
}

当我构建库并将创建的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文件并设置了“附加的目录”,“附加库目录”和“附加依赖项”,它可以正常工作。非常感谢。我现在感觉很蠢......

1 个答案:

答案 0 :(得分:1)

您有两种选择:将库添加到项目属性&gt;配置属性&gt;链接器&gt;输入&gt;其他依赖项或使用#pragma指令。

#pragma comment(lib, "testlib.lib")