2016-10-11 3 views
0

내 정적 라이브러리를 만들려고하는데 다른 프로젝트에서 사용할 수 없습니다.Visual 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 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

포인터를 사용하면 디자인이 좋지 않아서 사용자가 메모리 관리를 염려하게되어 컴파일러가 최적화하기가 훨씬 어려워집니다. –

답변

0

에서 C/C++ -> 일반 - 추가는 디렉토리를 지정해야 포함 디렉터리> 여기서 Matrix3.h이 배치됩니다. 그렇지 않으면 컴파일러는 컴파일되는 소스 파일이있는 동일한 디렉토리에서 검색합니다.