c++ - Visual Studio 可以通过 "Go To Definition"找到标识符的定义,但编译器会抛出 "identifier not found"(CS3861)

标签 c++ visual-studio-2017

右键单击

int retVal = pn_Plaus_SDB1xxx_V820(sdbBuffer);

在 PNIO_SDB_Plausib_Console.vcxproj 的 cpp 文件中并选择转到定义,Visual Studio 2017 能够在 PN_CPP_SDB1xxx_Plausib_V820.vcxproj 的 .cpp 文件中找到以下定义相同的解决方案:

UINT32 EXPORT pn_Plaus_SDB1xxx_V820(BYTE* in_sdb_Data)
{
    return pn_SDB_Plausib_Controller(in_sdb_Data, 0, 0);
}

构建完整的解决方案会抛出一个

Error   C3861   'pn_Plaus_SDB1xxx_V820': identifier not found   

完全相同的声明。

为什么VS2017能找到定义而编译器却找不到?缺少什么?

最佳答案

编译器只知道它正在编译的特定文件,包括其 header 。
IDE 正在整个解决方案中搜索定义。

您需要#include包含函数声明的 header 。
(您通常可以通过使用“转到声明”来找出是哪一个。)

关于c++ - Visual Studio 可以通过 "Go To Definition"找到标识符的定义,但编译器会抛出 "identifier not found"(CS3861),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159918/

相关文章:

docker - docker在Windows 10的Asp.Net Core中以代码126(0x7E)退出

C++ 错误 No matching member function for call to addtoucheventlistener

c++ - 使用 SFINAE 检测模板方法

c++ - C++ 项目中未定义 NORMAL_PRIORITY_CLASS

c++ - 枚举变量默认值?

c++ - C++返回集合的接口(interface)

c# - 无法将 Azure CloudService 项目添加到现有解决方案

code-coverage - 如果启用代码覆盖率,TFS 2017 测试任务在 VS 2017 构建机器上运行失败

typescript - 尽管从 nuget 安装,msbuild + Visual Studio 仍执行错误的 TypeScript 版本

c# - MSB6003 无法运行指定的任务可执行文件 "sgen.exe"。文件名或扩展名太长