我一直从Visual Studio 2013中得到一个未解决的“来自C ++的未解决的外部错误。非常感谢您的帮助。我已经将代码更多地减少到以下形式(但问题仍然存在):
main.cpp中:
#include "Fibonacci.h"
using namespace std;
int main(void){
int RandInteger = 3;
Fibonacci Fib(RandInteger);
}
Fibonacci.h
class Fibonacci{
public:
Fibonacci(int n=0);
protected:
int m_n0, m_n1, m_n;
};
Fibonacci.cpp:
#include "Fibonacci.h"
Fibonacci::Fibonacci(int n){
m_n0 = 0;
m_n1 = 1;
m_n = n;
}
此代码在Visual Studio 2013中产生以下错误:
错误2错误LNK1120:1个未解析的外部C:\ Dropbox \ todo \ c ++ \ Exam \ Ex2 \不起作用\练习2 \ fibo1 \ Fibo1 \ Debug \ Fibo1.exe Fibo1 错误1错误LNK2019:函数_main C:\ Dropbox \ todo \ c ++ \ Exam \ Ex2 \ doesn中引用了未解析的外部符号“public:__thiscall Fibonacci :: Fibonacci(int)”(?? 0Fibonacci @@ QAE @ H @ Z)工作\练习2 \ fibo1 \ Fibo1 \ main.obj Fibo1
我坚持,但只要用
替换main.cpp中的行 Fibonacci Fib();
即。我没有将整数传递给构造函数,一切正常(好吧它编译没有按预期做任何事情)。
感谢您的帮助!我真的还是被卡住了。
答案 0 :(得分:1)
我终于找到了我的错误。事实证明代码本身并没有什么问题,但我已经以某种方式破坏了我的VisualStudio项目。我真的不是这些东西的专家,但这对我有用:
我知道这是直截了当的方式,但我看不出我是如何打破旧项目的(毕竟它应该很简单)
感谢大家 - 特别感谢otisonoza和Angew,让我走上正确的轨道,代码没有任何问题(可以在他们的最后工作),但是使用Visual Studio项目。
答案 1 :(得分:0)
您的main
函数应返回int
void main(void){
应该是
int main(){
编辑:感谢otisonoza在评论中指出某些编译器接受了main的定义。除此之外,我看不到系统中编译器错误的原因。你确定你完全按照你写的那样粘贴了代码吗?
此外,在定义main
之后随机勾选的是什么?
}`
此外,在.cpp文件中的每个函数之后,您不需要使用分号:
Fibonacci::Fibonacci(int na){
m_n0 = 0;
m_n1 = 1;
m_n = 2;
};
int Fibonacci::getNext(int FnM1, int FnM2){
return FnM1 + FnM2;
};
可以
Fibonacci::Fibonacci(int na){
m_n0 = 0;
m_n1 = 1;
m_n = 2;
}
int Fibonacci::getNext(int FnM1, int FnM2){
return FnM1 + FnM2;
}