【问题标题】:Error: Unresolved external symbol error in C++错误:C++ 中未解决的外部符号错误
【发布时间】:2021-10-30 18:59:56
【问题描述】:

编译问题是由全局变量[All_Sockets]引起的,这里是最小的例子

main.cpp

#include <winsock2.h>
#include <windows.h>
#include <vector>
#include "global.h"


int main() {

    std::vector<SOCKET> All_Sockets(10, INVALID_SOCKET);    // definition of global var

    getchar();
    return 1;
}

global.h

#pragma once
#include <vector>
#include <Windows.h>

extern std::vector<SOCKET> All_Sockets;      // declaration of global variable

file1.cpp

#include "global.h"
#include <windows.h>

void ftn1(){
    int i = 2;
    SOCKET Client_socket = All_Sockets[i];      // usage of global var
}

我在 Visual Studio 中构建这个项目,出现以下链接错误

1>file1.obj : error LNK2001: unresolved external symbol "class std::vector<unsigned int,class std::allocator<unsigned int> > All_Sockets"

【问题讨论】:

    标签: c++ unresolved-external


    【解决方案1】:

    您必须将All_Sockets 定义为全局变量。目前All_Sockets被定义为局部变量,所以All_Sockets必须定义在main函数之上。

    std::vector<SOCKET> All_Sockets(10, INVALID_SOCKET);    // definition of global var
    
    int main() {
        getchar();
        return 1;
    }
    

    【讨论】:

    • 哦,我以为只有声明应该是全局的。谢谢你的回复:)
    猜你喜欢
    • 1970-01-01
    • 2014-05-12
    • 2014-05-14
    • 2011-09-03
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多