错误:C++ 中未解析的外部符号错误

Error: Unresolved external symbol error in C++

提问人:user260854 提问时间:9/1/2021 最后编辑:user260854 更新时间:9/1/2021 访问量:196

问:

编译问题是由全局变量 [ ] 引起的,这里是最小的例子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;
}

全球.h

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

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

文件1.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++ 未解析的外部

评论


答:

2赞 secuman 9/1/2021 #1

必须定义为全局变量。目前,被定义为局部变量,所以必须定义上面的函数。All_SocketsAll_SocketsAll_Socketsmain

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

int main() {
    getchar();
    return 1;
}

评论

0赞 user260854 9/1/2021
哦,我以为只有宣言应该是全球性的。感谢您的回复:)