【发布时间】: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