我对C++和Eclipse一般都很陌生,所以如果我遗漏了一些相当明显的东西,我会道歉.
我遇到的问题是我试图在我的一个源文件中包含一个头文件,但它们位于我的项目目录中的不同文件夹中.我不知道应该如何包括它们.我上传了一张图片,显示我想要包含突出显示的头文件的问题.

如果有人能告诉我'#include'声明我应该使用它们那将是非常棒的.
谢谢!
我正在开发一个使用autoconf&的C++项目,automake我正在努力正确设置包含路径*CPPFLAGS.我已经阅读了大约3个小时的文件,我还想不通.我不是在寻找黑客,而是寻找正确的方法.这是我的难题.
在我看来,包含路径有3个完全不同的来源:
configure --with-XXX=<PATH>.#include <file.h>即使file.h是包的一部分也使用,所以为了编译它们,我必须正确设置包含路径.(注意,它不是编辑所有这些文件的选项.)CPPFLAGS.在我目前的设置中:
configure.ac通过AC_SUBST(CPPFLAGS, "$CPPFLAGS -I<path>").Makefile.am通过test_CPPFLAGS = -I<path>.CPPFLAGS在运行之前设置,则会make覆盖类型1设置,从而导致编译失败.当然,用户可以尝试使用CXXFLAGS,但是那个用户有不同的用途(记住,我要求正确的方法来做到这一点,而不是黑客).我尝试通过使用AM_CPPFLAGSinside 设置Type 1路径来解决这个问题configure.ac.(供参考:如果您设置AM_CPPFLAGS而不是CPPFLAGS,但仍需要运行某些检查AC_CHECK_HEADERS,则需要临时设置CPPFLAGS然后还原它以使检查起作用;这将在此处解释.)这样可以释放CPPFLAGS类型3路径,但不幸的是,编译失败,因为只有没有专门存在的情况下Makefile才会生成-s .因此,如果存在类型2路径,则编译将失败,因为它不会获得类型1路径.configureAM_CPPFLAGS<target>_CPPFLAGStest_CPPFLAGStest
修复方法是指定内部Makefile.am始终使用AM_CPPFLAGS.但这是"按书"吗?我可以以全局方式执行此操作,还是必须编辑每个单独的target_CPPFLAGS?还有其他"正确"的解决方案吗?
我正在使用 VS code 内部的 Arduino 和 Teensy 板。我可以很好地构建和编程一切,但 VS Code 中内置的突出显示和代码跟踪功能不起作用。
以前,我的自定义标题没有加载或突出显示,但这个答案对我有用。现在我的包含路径上有正确的库(我可以单击并跟随它们找到正确的源),但有些名称仍然不起作用:
我的includePath似乎配置正确,正如我提到的,我可以遵循包含内容并打开正确的源:
"includePath": [
"${workspaceFolder}/**",
"C:/Program Files (x86)/Arduino/**",
"C:/Program Files (x86)/Arduino/hardware/teensy/avr/cores/teensy/**",
"C:/Program Files (x86)/Arduino/hardware/teensy/avr/libraries/ADC/**",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino/**",
"C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard/**",
"C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include/**"
]
Run Code Online (Sandbox Code Playgroud)
我可以确认标头位于 includePath 上并且定义了我要查找的名称:
不知怎的,VS Code 仍然说标识符未定义。
有任何想法吗?
我已经读过,当包含一个php文件时,使用绝对路径的处理时间比相对路径快.
你建议使用什么?
include("includes/myscript.php");
Run Code Online (Sandbox Code Playgroud)
要么
include("/home/ftpuser/public_html/includes/myscript.php");
Run Code Online (Sandbox Code Playgroud)
甚至
set_include_path("/home/ftpuser/public_html/includes");
include("myscript.php");
Run Code Online (Sandbox Code Playgroud)
还是我真的不应该担心的事情?
我发现#include "../app/thing.h"非常难看,我希望能够从我的项目的主根导入,如下所示:
#include <project/app/submodule/thing.h>
(我知道<>通常用于外部,但我发现它更清洁)
我怎样才能在项目的任何地方做到这一点?
更新:在打开微软支持电话后的六个月内,它被拒绝,他们声称这不是一个错误(因为文档没有明确说明所看到的行为不正确).他们拒绝DCR说,由于他们在过去十年没有听到任何投诉,这显然不是一个常见的用例.
这是对武器的呼吁,如果您遇到同样的问题,请打开与Microsoft的支持电话,以便他们了解应该修复它.我知道至少有人遇到了同样的问题,因为我在Chrome的源代码中发现了这条评论:
#构建.idl文件.
#这是一团糟.MIDL需要从$ OPEN_DIR运行,因为
#将其包含路径应用到像"ui/ie/bla.idl"这样的相对路径
#(它只查看当前目录)太愚蠢了.所以我们必须跳过箍来修复
#我们的相对包含路径和输出文件.
原始问题:
我有以下文件结构:
C:\first\Foo.idlC:\second\Bar.idl其中Bar.idl包含以下行:
import "first/Foo.idl";
Run Code Online (Sandbox Code Playgroud)
如何从编译时获得midl编译?Bar.idlC:\second
如果我Foo.idl直接导入(没有指定first/),那么指定first为一个额外的包含目录就足够了(midl /I c:\first Bar.idl)并且它会找到Foo.idl
或者,如果我从C:\(midl second\Bar.idl)编译也可以.
问题是,当C:\second使用命令行从内部编译时midl /I C:\ Bar.idl,我得到以下编译错误:
c1:致命错误C1083:无法打开源文件:'first\Foo.idl':没有这样的文件或目录
看起来midl只是在相对于当前目录而不是指定的其他包含目录之一时才愿意搜索相对路径,并且仅对非限定文件名使用其他包含目录,此行为特定于import关键字,使用include结果如预期.
我希望能够添加两个不同的附加包含目录,这样如果我在本地计算机上有文件midl将采用该版本,否则它将从服务器获取文件(因此chdir转到根文件夹不是一个选项).
有办法解决这个问题吗?
本质上,我已经能够很好地为 python 安装 openCV,但我也希望能够为 C++ 做到这一点。我能够使用我的 linux 发行版的包管理器(基于 arch 的 manjaro 的 pacman)安装它,但我还没有使用以下程序来测试 openCV
#include <iostream>
#include <opencv2/core.hpp>
int main() {
std::cout << "OpenCV version: " << CV_VERSION << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在尝试编译这个程序时遇到的错误如下:
cv.cpp:2:10: fatal error: opencv2/core.hpp: No such file or directory
2 | #include <opencv2/core.hpp>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
显然,这是一个常见的错误,但是我尝试了很多解决方案,但它们似乎都不起作用。我知道 core.hpp 在哪里,它实际上在 /usr/local/include/opencv4/opencv2/core.hpp。但是,当我将 include 语句更改为
#include opencv4/opencv2/core.hpp
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
In file included from cv.cpp:2:
/usr/include/opencv4/opencv2/core.hpp:52:10: fatal error: opencv2/core /cvdef.h: No such file or directory
52 | #include "opencv2/core/cvdef.h"
| …Run Code Online (Sandbox Code Playgroud) 以下是该情况的完整背景:
我最近有一台新Mac,我是一名php开发人员,所以我下载了MAMP并开始开发.
首先我注意到我的包含没有包括在内,但我通过配置我的更改了php.ini.
但是现在,当我尝试使用函数包含文件时,它无法识别该函数.
例如,我有一个名为的文件functions.php:
<?php
function doit(){
echo "did it";
}
?>
Run Code Online (Sandbox Code Playgroud)
以及包含它的文件,名为index.php
<?php include("functions.php"); doit();?>
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息
致命错误:在第4行的index.php中调用未定义的函数doit()
在升级到Lion 并升级Xcode之后,make似乎找不到头文件和库.我查看/ usr/include.那里唯一的东西是'并行 - 服务器'.所以,我将/ usr/include重命名为/usr/include.old,并创建了一个符号链接:
/Developer/SDKs/MacOSX10.6.sdk/usr/include/
这很邪恶.但是,make现在可以找到标题.仍然找不到libs(例如,lcrt1.10.6.o).
解决include和lib问题的正确方法是什么?
谢谢!
我正在运行Linux,并且已经下载了一个python模块,我必须安装它而不能访问除我的特定/ home/user目录以外的任何模块(我没有root权限,也没有选择它们).
这当然需要Python源代码.我已经下载并在所述用户目录中进行了处理.
虽然要求管理员将正确的文件复制到/usr/include/python2.7是最简单的方法,但我希望有一个更通用和可移植的解决方案来解决这类问题.
仅更改模块源中的数据(MANIFEST.in,README.txt,setup.py等),如何将任意目录添加到Python.h和朋友的搜索路径中?
(没有解决方案,"python setup.py build"将继续返回"Python.h:没有这样的文件或目录"错误)
非常感谢你.