J'essaie de créer ma propre bibliothèque statique, mais je ne peux pas l'utiliser dans mon autre projet. Je compilé la bibliothèque en ligne de commande avec cette commande:Visual C++ - en-tête de ma bibliothèque statique introuvable
cl /c /EHsc Matrix3.cpp
Je l'ai ajouté comme référence à mon projet, et j'ai ajouté le répertoire contenant le fichier .lib compilé à mon projet.
Le code de la bibliothèque est ci-dessous.
fichier d'en-tête:
#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);
};
fichier .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;
}
L'utilisation de pointeurs est une mauvaise conception, elle oblige l'utilisateur à s'inquiéter de la gestion de la mémoire et rend l'optimisation du compilateur beaucoup plus difficile. –