2016-10-11 1 views
0

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; 
} 
+1

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. –

Répondre

0

Dans les autres paramètres du projet, dans C/C++ -> Général-> supplémentaires répertoires d' vous devez spécifier le répertoire où Matrix3.h est placé. Sinon, le compilateur cherchera dans le même répertoire que le fichier source en cours de compilation.