gpt4 book ai didi

c++ - 未解析的外部符号(再次)

转载 作者:行者123 更新时间:2023-11-30 02:54:42 27 4
gpt4 key购买 nike

我不知道为什么下面会给我:*“error LNK2001: unresolved external symbol 'struct Win32Vars_t win32' (?win32@@3UWin32Vars_t@@A)”* 如果我开始一个新项目并创建这个头文件它编译得很好。我还创建了另一个与此类似的结构,它也可以正常编译(尽管不是“extern -variablename-”,它是静态的。这应该行不通吗?

win_local.h

#ifndef __WIN_LOCAL_H__
#define __WIN_LOCAL_H__

#include <windows.h>

void System_CreateConsole(void);

typedef struct {

HWND hWnd;
HINSTANCE hInstance;

} Win32Vars_t;

extern Win32Vars_t win32;

#endif

括号中神秘的@@3U 消息是怎么回事?

很抱歉又写了一篇关于 Unresolved external 问题的帖子。我确实事先做了一些阅读并尝试了各种方法。根据我的阅读,这是 C 的做事方式,但在 C++ 中仍然有效。是的,.h 文件设置为编译 C/C++。

最佳答案

那是因为声明了一个“extern”变量但没有定义:你只是告诉编译器你的代码中的其他地方有一个“Win32Vars_t win32”变量并且它可以使用它。

只有“外部”,没有分配任何符号,这就是为什么你会得到一个未解析的符号。

这意味着您必须在代码的其他地方定义它。通常的模式是在头文件中使用“extern”,因此包含该头文件的所有其他文件都能够“看到”变量,并在源文件(something.c)中定义变量,如下所示:

foo.h

#ifndef FOO_H
#define FOO_H

extern int foo;

#endif

.c

#include "foo.h"

int foo;

您可以在此处找到有关外部变量的更多信息:http://en.wikipedia.org/wiki/External_variable

关于c++ - 未解析的外部符号(再次),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16884320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com