Linker error LNK2001

2019-01-19 02:47发布

When I try to create an object I get a LNK2001 error in Visual Studio, it's a problem with the constructor I think since changing the constructor changes the error.

Customer bob("Bob", "25 Bob Lane", "01bob82", "M", "bob/bob/bob");

This line gives this error:

Error   1   error LNK2001: unresolved external symbol "public: __thiscall
Customer::Customer(class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class 
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >)" (??0Customer@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?
$allocator@D@2@@std@@0000@Z)    D:\Dropbox\Work\C++\C++ Assignment\C++ 
Assignment\driver.obj

Customer class that contains the constructor:

#pragma once
#include "l_list.h"
#include "Account.h"
#include <string>

using namespace std;

class Customer
{
private:
    l_list<Account> accounts;
    string name;
    string address;
    string telNo;
    string sex;
    string dob;

public:
    Customer(string name, string address, string telNo, string sex, string dob)
    {
        Customer::name = name;
        Customer::address = address;
        Customer::telNo = telNo;
        Customer::sex = sex;
        Customer::dob = dob;
    }

    void createAccount()
    {
        cout << "What type of account?";

    }

};

4条回答
我只想做你的唯一
2楼-- · 2019-01-19 03:27

If you have linking error then syntactically your code is OK otherwise you'll get compiler errors.

What you should check(or add) is path in Dependencies property of the project that uses Customer class. In VS you can find it "Project Properties->Configuration Properties->Linker->Input->Additional Dependencies". Seems that linker can't find the external library with Customer implementation. You can successfully compile your project cause all #include are correct but you fail on the stage of linking just because of dependencies.

查看更多
贪生不怕死
3楼-- · 2019-01-19 03:28

I encountered exact same problem. This is how I fixed:

Use #include<string> instead of #include "string.h" in the file calling Customer constructor.

查看更多
爷的心禁止访问
4楼-- · 2019-01-19 03:32

I had the same error. It turned out that one necessary function was commented out. When I uncommented this function, the error disappeared.

查看更多
爷、活的狠高调
5楼-- · 2019-01-19 03:33

What's there looks OK to me. Check other things, like make sure your namespaces are right, or there's not another/conflicting "Customer" definition, etc. Try commenting out large sections of code or reducing your code to a small test case.

查看更多
登录 后发表回答