C++ MS Visual Studio 错误“在函数公共中引用:void __thiscall ...”

Posted

技术标签:

【中文标题】C++ MS Visual Studio 错误“在函数公共中引用:void __thiscall ...”【英文标题】:C++ MS visual studio error " referenced in function public: void __thiscall ..." 【发布时间】:2020-03-18 10:01:19 【问题描述】:

尝试在 VS 中运行 C++ 项目时出现以下错误

我的 main.cpp (ATM machine.cpp)

#include <iostream>
#include <fstream>
#include <string>
#include "Account.h"
using namespace std;

class options

    private:
        char user_chose;
        int id;
        int pass;

    public: 

        void login()
        
            // Get credentials
            cout << "Please enter your user id: ";
            cin >> id;
            cout << "Please enter your password: ";
            cin >> pass;

        

        void quit()
        
            cout << "quiting...";
        

        void IntroMenu()
        
            cout << "Please select an option from the menu below :" << endl;
            cout << "l -> Login" << endl;
            cout << "c -> Create New Account" << endl;
            cout << "q -> Quit" << endl;
            cout << "> ";
            cin >> user_chose;

            switch (user_chose)
            
                case ('l'):
                case ('L'):
                    login();
                    break;

                case ('c'):
                case ('C'):

                    Account i;
                    i.createAccount();
                    break;

                case ('q'):
                case ('Q'):
                    quit();
                    break;

                default:
                
                    cout << "\n***Invalid option***\n" << endl;
                    IntroMenu(); //Recall function
                
            ;
        ;
;

int main()

    cout << "Hi!Welcome to the ATM Machine!" << endl;
    options start;
    start.IntroMenu();

    return 0;

我的标题(Account.h)

#ifndef ACCOUNT_H_INCLUDED
#define ACCOUNT_H_INCLUDED

class Account

    public:
        void createAccount();
;

#endif

(Account.cpp)

#include "Account.h"
using namespace std;

Account::createAccount();
void Account::createAccount() 

    //Save account on database(txt file)

    cout << "\nAccount created successfully\n" << endl;

错误 1

LNK2019 未解析的外部符号“public: void __thiscall 帐户::createAccount(void)" (?createAccount@Account@@QAEXXZ) 在函数“public: void __thiscall”中引用 options::IntroMenu(void)" (?IntroMenu@options@@QAEXXZ)

错误 2

LNK1120 1 个未解决的外部问题

提前致谢!

【问题讨论】:

Account::createAccount(); 这是一个语法错误。由于编译器没有显示它,因此您的 Account.cpp 没有添加到 VS 项目中。 这能回答你的问题吗? What is an undefined reference/unresolved external symbol error and how do I fix it? 【参考方案1】:

在您的 cpp 文件中:

#include "Account.h"
using namespace std;


Account::createAccount(); // remove this


void Account::createAccount() 

    cout << "\nAccount created successfully\n" << endl;

删除该行后,您的程序应该运行。

编辑

修复后它对我来说很好。

你可以尝试移动

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

Account.h 并删除其他using namespace std;,在main() 中只留下#include &lt;Account.h&gt;

这提示缺少库,因此还要检查 Account 类文件是否在项目根目录中。

如果这不能解决,请查看C++ compile error (LNK1120 and LNK2019) with Visual Studio。

【讨论】:

@OfficialAhmed 我在回答中添加了更多细节。 我使用了代码块而不是 Visual Studio,一切正常。还是谢谢你 @OfficialAhmed 我很高兴您能够以某种方式解决它,这是一件奇怪的事情,因为我在我的代码中运行了您的代码并且运行良好,也许是一些配置问题或依赖缺失,但是如果您对代码块感到满意,则无需浪费更多时间来找出问题所在。

以上是关于C++ MS Visual Studio 错误“在函数公共中引用:void __thiscall ...”的主要内容,如果未能解决你的问题,请参考以下文章

关于Visual studio出现错误的问题!!!

microsoft visual c++里的编译在哪里?

MS Visual Studio 2012 Express 是不是同时包含 C#、Visual Basic、C++? [关闭]

发现凸缺陷?在 OpenCV 2.3 中,c++ 与 MS Visual Studio 2010

将新的 MS C++ 编译器与旧的 Visual Studio 一起使用

为啥 g++ 和 MS Visual Studio C++ 执行以下代码的方式不同?