Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio无法打开包含文件,将从路径中删除字符_Visual Studio_Visual C++_Visual Studio 2017_Poco Libraries - Fatal编程技术网

Visual studio Visual Studio无法打开包含文件,将从路径中删除字符

Visual studio Visual Studio无法打开包含文件,将从路径中删除字符,visual-studio,visual-c++,visual-studio-2017,poco-libraries,Visual Studio,Visual C++,Visual Studio 2017,Poco Libraries,我正在使用Microsoft Visual Studio Professional 2017构建一个使用Poco库的项目 背景: 我不知道这是否恰当,但我要说的是,我手动下载并构建了Poco(以及所有其他需要的LIB),多年来一切都很顺利。现在我转而使用Miniconda3来管理我的库,通过安装Poco并更改相关的包含路径 $(POCO_DIR)/Foundation/include $(POCO_DIR)/Util/include ... 公正 $(CONDA_LIBS)/include

我正在使用Microsoft Visual Studio Professional 2017构建一个使用Poco库的项目

背景: 我不知道这是否恰当,但我要说的是,我手动下载并构建了Poco(以及所有其他需要的LIB),多年来一切都很顺利。现在我转而使用Miniconda3来管理我的库,通过安装Poco并更改相关的包含路径

$(POCO_DIR)/Foundation/include
$(POCO_DIR)/Util/include
...
公正

$(CONDA_LIBS)/include
使用系统变量
$(CONDA_LIBS)=D:\CodeLibraries\CONDA_LIBS\Library
。此
CONDA_LIBS
目录存在,并包含包含所有Poco头文件和子文件的
include/Poco/
子目录

问题:
这个项目进行得很好。我发现了一个链接器错误,在深入研究的过程中,我发现了Visual Studio 2017的一些奇怪行为:

当我使用任何Poco头文件将光标移动到
#include
指令时,例如

#include "Poco/DateTime.h"
我通常可以键入CTRL+SHIFT+G打开并跳转到相关文件。
这不再有效了,我得到一个弹出窗口,告诉我

D:\CodeLibraries\conda\u libs\Library\include\oco\atetime.h
无法打开文件

注意
\(p)oco\(D)atetime.h
中缺少的字母。另外,请注意,找到了一个文件,但无法打开

当我尝试在子目录中使用头文件时,如

#include "Poco/JSON/Parser.h"
我明白了

D:\CodeLibraries\conda\u libs\Library\include\oco\son\rser.h
无法打开文件

注意
(p)oco\(J)SON\(Pa)rser.h
中缺少的字母“p”、“J”和“Pa”(?!)

其他信息:
  • 当我将Poco头文件从Windows资源管理器拖放到Visual Studio(!)
  • 我可以从“打开文件”对话框(CTRL+O)打开这些文件
  • 我仍然可以使用CTRL+SHIFT+G快捷键在项目中打开我自己的头文件,并打开其他库头文件,如
    gdal.h
    或boost头文件
  • 如果我
    #包含“oco/ateTime.h”
    (注意缺少的字母)并尝试通过CTRL+SHIFT+G打开它,我会收到预期的消息“文件'oco/ateTime.h'未在当前源文件的目录或构建系统路径中找到”,下面列出的路径包括
    D:\codebraries\conda\u libs\Library/include

问题: 知道为什么Poco头文件的CTRL+SHIFT+G快捷键和拖放操作都失败了吗


编辑:
请注意:

  • 我不是问一般的“未找到文件”错误:我通常可以很好地处理include和lib路径,谢谢
  • 斜杠和反斜杠至少在过去几年中可以在VisualStudio中互换使用
“无法打开文件”错误可能是由于项目包含和源路径中的错误配置,或由于第三方扩展,甚至可能是由于损坏/有缺陷的IDE,但它与链接器错误无关,正如您所提到的。您还确认文件正在编译,因此IDE的内置代码导航器或扩展肯定存在一些问题

关于链接器错误,在与第三方库进行链接时,您所引用的项目配置、库目标、库和头文件版本应该匹配

以下是链接第三方库的一些常规检查表:

  • 运行库:MT、MTd、MD、MDd等
  • 字符集:Unicode或多字节
  • 目标编译器
  • 目标机
  • 子系统
  • 正在使用的第三方库是否具有其他依赖项,以及您是否正确链接了它们的确切版本
  • 这些是特定于POCO的检查表:

  • 头文件与链接器路径中引用的POCO版本 配置

  • 链接项目所依据的OpenSSL版本(如果有) 使用POCO的SSL、加密和网络模块

  • 在我的机器上,同样的设置(但为VisualStudio 2017 target配置了VisualStudio 2019)运行正常。

    在Windows中,您应该使用“\”作为目录分隔符,而不是“/”

    我的猜测是VS将你的“/”替换为“\”,那么每个单词的第一个字母都是未替换的字符

    尝试将“/”替换为“\\”

    奇数

    当我今天回到办公室时,我想再次调查一下,看看是否能找到更多关于IntelliSense找不到POCO头的信息,以及错误消息中奇怪的删除字符的信息,但它现在起作用了:
    是的,我可以再次跳转到POCO头文件,方法是将光标移动到
    #include
    行并按CTRL+SHIFT+G

    不知道是重新启动VS修复了这个问题,还是修复了链接器错误——顺便说一句,这是微不足道的,我甚至可能在写这个问题的时候做过。不幸的是,在链接器修复后,我没有重新检查IntelliSense行为是否损坏,或者没有记录IntelliSense在修复后仍然损坏。
    所以:恐怕没有真正的结束



    编辑:建议一种解决方法是删除IntelliSense DB文件并重新启动VS以强制重新分析项目。下次我会试试。

    您确定没有第三方扩展扰乱Visual Studio设置吗?您是否也尝试过\,not/?“项目编译良好。我有一个链接器错误”,是否可以使用链接器错误更新帖子?当您混合使用不同版本的库(dll、lib或对象文件)和/或其相应的头文件时,会发生链接器错误。这种情况通常发生在您只引用最新的头而不引用最新的lib时,反之亦然。请确保您正在链接到您配置的POCO的确切版本