C++如何在VS 2015中设置文件之间的链接

C++. How do i setup linking between files in VS 2015

本文关键字:文件 设置 之间 链接 2015 VS C++      更新时间:2023-10-16

我正在尝试执行一个程序,在该程序中,我输入存储在一个对象中的3个值和从其他2个值生成的第四个值,并将该对象存储到一个向量中。

问题是我从generateSignature()函数中得到了一个错误。经过大量的谷歌搜索,我确实发现了一些东西,你需要将文件链接在一起,以便它们正确编译。但这就是我所发现的,我似乎找不到任何关于如何将文件链接在一起的帮助,所以我请求一些关于如何在Visual Studio 2015中链接文件的帮助。

我得到的错误是:

LNK2019 unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl generateSignature(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::vector<struct Data,class std::allocator<struct Data> > &)" (?generateSignature@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@0AAV?$vector@UData@@V?$allocator@UData@@@std@@@2@@Z) referenced in function _main    ProjektKurs C:UsersFredrikdocumentsvisual studio 2015ProjectsProjektKursProjektKursProjektKurs.obj  

Project.cpp:

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include "constants.h"
using namespace std;
      int main()
            {
                    vector<Data> dataVector;
                    struct Data newdata;
                    newdata.fname = "testfname";
                    newdata.lname = "testlname";
                    //add signature
                    newdata.signature = generateSignature("testfname","testlname",dataVector);
                    newdata.height = 1.85;
                    dataVector.push_back(newdata);
                    for (int i = 0; i < dataVector.size();i++) {
                        cout << dataVector.at(i).fname << " " << dataVector.at(i).lname + " " + dataVector.at(i).signature << " " << dataVector.at(i).height << endl;
                    }
            }

constants.h:

#pragma once
#ifndef CONSTANTS_H
#define CONSTANTS_H
#include <string>
#include <vector>
using namespace std;
struct Data {
    string fname;
    string lname;
    string signature;
    double height;
};
string generateSignature(string fname, string lname, vector<Data>& data);
#endif

constants.cpp:

#include "stdafx.h"
#include "constants.h"
#include <iostream>
#include <string>
#include <vector>

using namespace std;
string generateSignature(string fname, string lname, vector<Data>& data) {
    string signature+=fname;
    signature+="test123";
    //some random code for the vector
    return signature;
}
Visual Studio有"项目"的概念。项目中的所有.cpp文件都被转换为.obj文件,然后这些.obj将被链接在一起。您可以在"解决方案资源管理器"窗口中找到该项目。(解决方案是项目的集合)