错误 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。然后在底部第一个项目创建的库的完整或相对路径(您可以先构建它来验证位置)。
我想测试以下几行,但我收到 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。然后在底部第一个项目创建的库的完整或相对路径(您可以先构建它来验证位置)。