错误 LNK2019:未解析的外部符号“public:__thiscall:构造函数问题

error LNK2019: unresolved external symbol "public: __thiscall : constructor issue

我想测试以下几行,但我收到 LNK2019 错误,指出我的构造函数中存在错误。如果将构造函数实现从源文件移动到 header,它就可以工作...

dVector 是 std::vector

的类型定义

错误 LNK2019:无法解析的外部符号 "public: __thiscall Grid::Grid(int,class std::vector > &,class std::vector > &,class std::vector > &)"

//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)
{
}

问题好像是有两个项目,一个找不到另一个编译的class。

我将在 Visual Studio 中尝试解释将一个项目用作库,将一个项目用作应用程序的过程。

首先在库项目中右击->属性,然后在常规选项卡下,配置类型应为静态库 (.lib)。

然后在应用程序项目中再次转到属性,select Linker->Input 并在文本框 Additional Libraries 中,使用箭头 select Edit。然后在底部第一个项目创建的库的完整或相对路径(您可以先构建它来验证位置)。