【问题标题】:Visual C++ - header of my static library not foundVisual C++ - 找不到我的静态库的标头
【发布时间】:2016-10-11 22:48:46
【问题描述】:

我正在尝试制作自己的静态库,但我无法在另一个项目中使用它。我用这个命令在命令提示符下编译了库:

cl /c /EHsc Matrix3.cpp

我将它添加为对我的项目的引用,并将包含已编译 .lib 文件的目录添加到我的项目中。

库代码如下。

头文件:

#pragma once

typedef struct
{
    float m[3][3];
} matrix3;

class Matrix3
{
public:
    Matrix3();
    ~Matrix3();
    matrix3* MatrixAdd(matrix3* A, matrix3* B);
    matrix3* ScalarMatrixMul(float scalar, matrix3* A);
    matrix3* MatrixMult(matrix3* A, matrix3* B);
};

.cpp 文件:

#include "Matrix3.h"

Matrix3::Matrix3() {
}


Matrix3::~Matrix3() {
}

matrix3* Matrix3::MatrixAdd(matrix3* A, matrix3* B) {

    matrix3* result = new matrix3;

    for (int row = 0; row < 3; row++)
        for (int col = 0; col < 3; col++)
            result->m[row][col] = A->m[row][col] + B->m[row][col];

    return result;
}

matrix3* Matrix3::ScalarMatrixMul(float scalar, matrix3* A) {

    matrix3* result = new matrix3;

    for (int row = 0; row < 3; row++)
        for (int col = 0; col < 3; col++)
            result->m[row][col] = scalar * A->m[row][col];

    return result;
}

matrix3* Matrix3::MatrixMult(matrix3* A, matrix3* B) {

    matrix3* result = new matrix3;

    float sum;

    for (int row = 0; row < 3; row++) {
        for (int col = 0; col < 3; col++) {
            sum = 0;
            for (int k = 0; k < 3; k++)
                sum += A->m[row][k] * B->m[k][col];
            result->m[row][col] = sum;
        }
    }

    return result;
}

【问题讨论】:

  • 使用指针是一个糟糕的设计,它迫使用户担心内存管理,并且使编译器更难优化。

标签: c++ static-libraries header-files


【解决方案1】:

在您的其他项目设置中,C/C++->General->Additional Include Directories 您需要指定放置Matrix3.h 的目录。否则编译器将在被编译的源文件所在的同一目录中搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2012-08-24
    相关资源
    最近更新 更多