Visual C — заголовок моей статической библиотеки не найден

#c #static-libraries #header-files

#c #статические библиотеки #заголовочные файлы

Вопрос:

Я пытаюсь создать свою собственную статическую библиотеку, но я не могу использовать ее в своем другом проекте. Я скомпилировал библиотеку в командной строке с помощью этой команды:

 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 resu<
}

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 resu<
}

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 resu<
}
  

Комментарии:

1. Использование указателей — это плохой дизайн, он заставляет пользователя беспокоиться об управлении памятью и значительно затрудняет оптимизацию компилятора.

Ответ №1:

В настройках вашего другого проекта, в C / C -> Общие-> Дополнительные включаемые каталоги, вам необходимо указать каталог, в котором Matrix3.h он размещен. В противном случае компилятор будет искать в том же каталоге, где находится компилируемый исходный файл.