我已经编写了自己的小静态库,其中包含以下标题和源文件
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文件并设置了“附加的目录”,“附加库目录”和“附加依赖项”,它可以正常工作。非常感谢。我现在感觉很蠢......
答案 0 :(得分:1)
您有两种选择:将库添加到项目属性&gt;配置属性&gt;链接器&gt;输入&gt;其他依赖项或使用#pragma指令。
#pragma comment(lib, "testlib.lib")