我想测试以下行,但是我得到了一个LNK2019错误,在我的构造函数中指出了一个错误。如果构造函数实现从源文件移动到头文件,它就可以工作......
dVector是std :: vector
的typedef错误LNK2019:未解析的外部符号" public:__ thiscall Grid :: Grid(int,class std :: vector>&,class std :: vector>&,class std ::向量>&)"
//main.cpp
#include <Math/PDE/Grid.h>
#include <vector>
int main(){
dVector oLowerBounds(2);
dVector oUpperBounds(2);
int lNumberOfStates(2);
dVector oMArkovianStates(2);
std::vector<int> oGridSizes(2);
Grid * pGrid= new Grid(lNumberOfStates, oLowerBounds, oUpperBounds, oGridSizes);
return 0;
}
// Grid.h
#ifndef GRID_H
#define GRID_H
#pragma once
#include <Math/Matrix/Matrix.h>
#include<vector>
class Grid
{
public:
Grid(int inGridDimension,
dVector &inLowerBounds,
dVector &inUpperBounds,
std::vector<int> &inGridSizes);
double getGridElement(int index1, int index2){return mGrid[index1][index2];};
void buildUniformGrid();
bool getIsUniformGrid(int index){return mIsUniformGrid[index];};
int getGridSize(int index);
~Grid(void);
private:
int mGridDimension;
std::vector<bool> mIsUniformGrid;
std::vector<double> mLowerBounds;
std::vector<double> mUpperBounds;
std::vector<int> mGridSizes;
std::vector<std::vector<double>> mGrid;
};
#endif
// Grid.cpp
#include <Math/PDE/Grid.h>
Grid::Grid(int inGridDimension,
std::vector<double> &inLowerBounds,
std::vector<double> &inUpperBounds,
std::vector<int> &inGridSizes):
mGridDimension(inGridDimension),
mLowerBounds(inLowerBounds),
mUpperBounds(inUpperBounds),
mGridSizes(inGridSizes)
{
}
Grid::~Grid(void)
{
}
答案 0 :(得分:2)
问题似乎是有两个项目,一个找不到另一个项目的编译类。
我将尝试解释将一个项目用作库,一个用作Visual Studio中的应用程序的过程。
首先在库项目中执行rightclick-&gt;属性,然后在选项卡General下,Configuration Type应该是Static library(.lib)。
然后在应用程序项目中再次转到属性,选择Linker-&gt;输入,在文本框Additional Libraries中,使用箭头选择Edit。然后在第一个项目的创建库的完整或相对路径的底部(您可以首先构建它以验证位置)。