错误LNK2019,原因未知
error LNK2019 for unknown reason
我的代码如下:
基本.h
#define Type double
型号.h
#include "Basic.h"
class Model{
protected:
int _N;
public:
Model(int _N, Type* config){ config=new Type[N]; _N=N}
virtual Type compute();
}
class Model1: public Model{
protected:
int _Nr,_Nc;
public:
Model1(int Nr, int Nc, Type* config):Model(Nr*Nc,config){_Nr=Nr;_Nc=Nc;}
virtual Type compute();
}
class Model2: Public Model{
public:
Model2(int N,Type* config):Model(N,config){/*other unrelated codes*/}
virtual Type compute();
}
型号1.cpp
#include "Model.h"
Type Model1::compute(){
/*definition*/
}
型号2.cpp
#include "Model.h"
Type Model2::compute(){
/*definition*/
}
方法.h
#include "Model.h"
void Method(Model* sys);
方法.cpp
#include "Method.h"
void Method(Model* sys){
Type a=sys->compute();
/*code*/}
主要.cpp
#include "Method.h"
int main(int argc, char** argv){
Model* sys=new Model2();
Method(sys);
/*code*/
}
我找不到任何问题,但编译器一直在抱怨"错误LNK2019:函数_main中引用的未解决的外部符号void __cdecl Method(class Model*)"。
我很沮丧,因为我是这方面的初学者,没能找到钥匙。我不知道是什么原因造成的:我的#define有什么问题吗?或者是因为不同的子类有相同名称的函数(看起来应该没问题)?或者还有其他bug?我甚至不知道该给这个问题添加什么标签。。。
有人能帮我弄清楚吗?非常感谢!
谢谢你的建议,我已经更新了问题,以确保所有的构造函数都包含在内。
看起来Method.cpp不是项目的一部分,所以它没有被编译,链接器也找不到Method
。
您应该将所有CPP文件添加到您的项目中——Main、Method、Model1和Model2。当你在做的时候,确保H文件也都在那里。
我认为Model.h中缺少一些分号。您需要用分号结束类定义。
例如:
class Model{
protected:
int _N;
public:
Model(int _N, Type* config){ config=new Type[N]; _N=N}
virtual Type compute();
};
但是,不确定这是否是解决您问题的方法。但是缺少分号可能会带来各种各样的问题。
相关文章:
- 继承期间显示未知行为的子类
- 输入中的字符串数未知(以字母表示)
- 具有未知值时的时间复杂性
- 类C++中的函数问题(LNK2019和LNK1120错误)
- 链表中写入访问冲突的未知原因
- 正在生成未知类实例
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 读取文件时运行时的未知行为
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- CppSQLite 抛出"LNK2019: unresolved external symbol"错误
- 初始化多个未知基类
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何存储未知次数迭代的输入?
- QtQuick - qml:28:错误:未知方法返回类型:自定义类型
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 未知的 CMake 命令"create_single_source_cgal_program"
- 如何在C++中循环访问未知对象方法?
- Coursera :自动评分器的未知信号 11
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 错误LNK2019,原因未知