将静态库添加到同一解决方案中的项目 (Visual Studio 2012)

use*_*308 5 static-libraries visual-studio-2012

我正在尝试创建一个将在项目中使用的静态库。该库编译良好并为其创建 *.lib 文件。为了测试我的代码,我向同一解决方案添加了另一个项目。当我尝试构建测试项目时,出现以下错误。

错误 LNK1120:4 个未解析的外部

错误 LNK2019:函数 _main 中引用了无法解析的外部符号“public: __thiscall >matrix::~matrix(void)” (??1?$matrix@M@@QAE@XZ)

错误 LNK2019:函数 >_main C:\Users\Ryan 中引用了无法解析的外部符号“public: __thiscall >matrix::matrix>(int,int)” (??0?$matrix@M@@QAE@HH@Z) \Documents\Spring 2013\ECE >4007\PointCloudLib\matrix_test\matrix_test.obj 矩阵_test

错误 LNK2019:函数 >_main 中引用了无法解析的外部符号“public: bool __thiscall >matrix::set(int,int,float)”(?set@?$matrix@M@@QAE_NHHM@Z)

错误 LNK2019:无法解析的外部符号“public: static void __cdecl >matrix::print(class matrix const &)”(?print@?$matrix@M@@SAXABV1@@Z) >在函数 _main 中引用

为了在我的代码中使用该库,我执行了以下步骤:

  1. 通过转到引用...>添加新引用...并选择我的库,添加了对静态库的引用
  2. 通过配置属性>C/C++>常规>其他包含目录将源文件所在的目录添加到包含目录中(我觉得这不是必需的,因为它有点违背了创建库的目的)

这些是 Microsoft 的 msdn 网站上列出的有关创建自己的静态库的步骤,这似乎是其他人所说的问题的解决方案。

要在我的项目中使用该库,我还需要做其他事情吗?

另外,这是我用来测试该库的代码:

#pragma once

#include "stdafx.h"
#include <iostream>
#include "matrix.h"

#define PI 3.14
#define matrix_f matrix<float>

int main()
{
    matrix_f m(3,4);

    for(int i = 0; i < 3; i++)
        for(int j = 0; j < 4; j++)
            m.set(i,j,PI/((i+1)*(j+1)));

    matrix_f::print(m);
}
Run Code Online (Sandbox Code Playgroud)

Nac*_*cho 0

您需要添加对要找到静态库的库目录的引用:

配置属性->链接器->常规->其他库目录