我一直从Visual Studio 2013的C ++中得到一个无法理解的“未解决的外部错误。非常感谢您的帮助。到目前为止,我将代码简化为以下形式(但问题仍然存在):

main.cpp:

 #include "Fibonacci.h"

using namespace std;

int main(void){

    int RandInteger = 3;
    Fibonacci Fib(RandInteger);

}


斐波那契

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:未解析的外部符号“ public:__thiscall Fibonacci :: Fibonacci(int)”(?? 0Fibonacci @@ QAE @ H @ Z)在函数_main C:\ Dropbox \ todo \ c ++ \ Exam \ Ex2 \ doesn中引用't work \ Exercise 2 \ fibo1 \ Fibo1 \ main.obj Fibo1

我仍然坚持,但是一旦我将main.cpp中的行替换为

        Fibonacci Fib();


即我没有将整数传递给构造函数,一切正常(很好,它编译并没有按预期执行任何操作)。

谢谢你的帮助!我真的还是被卡住了。

最佳答案

我终于找到了我的错误。事实证明,代码本身确实没有错,但是我已经以某种方式销毁了VisualStudio项目。我确实不是这些事情的专家,但是这对我有用:


在Visual Studio中创建一个新的空项目
将您的cpp文件(也都是* .h文件)复制到新项目文件夹中
通过右键单击项目并使用“添加新项”将它们添加到该新项目中


我知道这是这样做的直接方法,但是我看不到如何打破旧项目(毕竟应该足够简单)

谢谢大家-特别是感谢otisonoza和Angew,他们使我走上了正确的道路,代码(在它们的末端有效)并没有错,但Visual Studio项目却没有错。

关于c++ - 具有简单类定义的C++外部解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21516841/

10-13 08:55