gpt4 book ai didi

c++ - C++ 程序中的 TCHAR 和未解析的外部符号 (LNK2019) 错误?

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

我的项目有两个cpp文件和一个头文件。一个cpp文件包含单个类的实现,它的声明在头文件中。另一个 cpp 文件包含 int main 函数。

该类的构造函数之一包含一个 TCHAR 参数,它在 LNK2019 链接器错误中被引用为未解析的函数。

我使用的是 visual studio 2010,我已将项目属性中的 Character set 选项设置为 Not Set,以便我可以在 charwchar_t 使用 UNICODE_UNICODE 宏。

目前我已经在我的主 cpp 文件的开头定义了这些,头文件包含在这两个文件之后。但是,如果我在头文件的开头定义这些宏,则项目可以完美编译。

有没有办法解决这个问题?或者我是否必须对类进行硬编码以使用 charwchar_t

谢谢。

最佳答案

您收到链接器错误是因为您在 main.cpp 中而不是在类的实现 .cpp 中定义了 UNICODE/_UNICODE 宏。因此,当 main.cpp 包含您的类的头文件时,它将 TCHAR 视为 wchar_t,但是当您的实现 .cpp 包含您的头文件时,它会将 TCHAR 视为 改为 char。您的不匹配导致链接器错误,因为 main.cpp 调用了您尚未实际实现的 wchar_t 构造函数。

您应该寻找 UNICODE/_UNICODE 宏的存在,而不是实际手动定义它们。将“字符集”选项设置为 MBCS 或 Unicode,以便 IDE/编译器可以为您全局管理整个项目的宏。我不知道将其设置为“未设置”实际上有什么作用,但这并不是您在这种情况下实际需要的。

关于c++ - C++ 程序中的 TCHAR 和未解析的外部符号 (LNK2019) 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446404/

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