问题标签 [g++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 有没有办法在每个编译单元中包含一个头文件而不修改每个源文件?
鉴于以下情况:
- 包含数千个 C++ 源文件的大型项目
- 没有通用头文件(没有一个头文件包含在每个源文件中)
- 所述项目是用 g++ 编译并由 make 管理的
有没有办法在每个编译单元中包含一个定义(例如宏)而不修改每个源文件以包含一个新的头文件?
c++ - 使用 g++ 在 Windows 上生成文件,链接库
我已经厌倦了 MSVC++6 以及每个人总是告诉我它是一个糟糕的编译器等等。
所以现在我决定尝试使用 vim 加上 g++ 和 makefile。这是我的问题;我有以下生成文件:
这在尝试时会出错make
,因为我需要链接到一个名为 的 Windows 库Ws2_32.lib
,这是Winsock2.h
我include
在我的一个.h
文件中需要的。
那么我该怎么做呢?我已经尝试过这个-l
选项,但我无法让它工作。它如何与有空格的路径一起工作?
linux - linux g++编译器重定向stderr和stdout创建空文件
我正在将 g++ 编译器输出(stderr 和 stdout)重定向到 linux 上的文件。但它正在创建一个空文件。
我在其他一些帖子中读到 stdout 在每一行之后都没有刷新。没关系,但是 stderr 呢?在我的情况下,运行多个屏幕时出现编译错误。所以,我对标准错误输出感兴趣。没有创建标准输出输出。
上面的命令创建了一个名为“output”的空文件。以下命令报告无效的空命令。
cygwin - 在 g++ 中使用 -mno-cygwin 标志是否有副作用?
我最近发现,只要我使用 -mno-cygwin 标志,我就可以使用 g++ 制作没有外部依赖项的 Windows 可执行文件。我的印象是编译器使用 MinGW 库而不是 cygwin。
这是使用 cygwin 构建没有 gpl 许可问题的二进制文件的有效方法吗?
除了更大的可执行文件之外,还有任何技术上的副作用吗?(即,失去 cygwin 特定的功能,受限的功能)
此功能是否记录在任何地方?我只能找到几年前描述它的新闻组帖子。
c++ - 在 Mac 上使用 FFMPEG 而不是 Quicktime 编译 OpenCV
我正在开发一些将在带有 OpenCV 和 FFMPEG 的 Linux 上运行的代码。我想使用我的 Mac 开发此代码,并且我需要 Mac 上的 FFMPEG 功能。
我已经能够像这样运行配置:
但是当我运行 make 我得到这个错误:
我尝试使用较新版本的 OpenCV 1.1pre1,但我得到了类似的错误,但符号不同。我使用与上面相同的 ./configure 。
如果我添加 --enable-shared=no 并且 OpenCV 将编译,但我的程序将无法运行......
关于如何使用默认的 --enable-shared 编译其中任何一个的任何建议?
g++ - 一个unix发行版上的静态链接可以工作,而另一个则不行吗?
如果我在 ubuntu 中静态链接一个可执行文件,该可执行文件是否有可能在其他发行版(如 mint os)中不起作用?或软呢帽?我知道处理器类型会受到影响,但除此之外还有什么我需要注意的吗?对不起,如果这是一个愚蠢的问题。谢谢你的帮助
c++ - 使用来自 cygwin 的 g++ C++ 编译器
我正在尝试执行我的第一个“Hello World!” 在 C++ 中。我使用的是 Windows XP,并且我已经安装了 cygwin,其中安装了 g++ C++ 编译器。我写了一个小 hello-world 程序,并保存在 hello.cpp 中。从命令提示符我写:
g++你好.cpp
但我得到:
'g++' 不是内部或外部命令、可运行程序或批处理文件。
我已经在我的 D:\programs\cygwin 中安装了 cygwin。我在 D:\cpp 中用我的 hello-world 文件创建了另一个目录。我的安装或路径似乎不太好,但我不知道是什么。我已经运行了 cygwin 的 exe 文件,并且在安装目录中我得到了所有必要的文件,我认为:bin 文件夹、lib、Cygwin.bat 等。
我已经阅读过,如果出现此类错误消息,我应该检查 cygwin1.dll 文件是否已复制到 Windows 的主文件夹中。这是 C:\WINDOWS 目录吗?我看过那里,我那里没有这样的文件。我在cygwin的bin文件夹中有cygwin1.dll:D:\programs\cygwin\bin。另外,如何检查命令的搜索路径中是否考虑了 bin 文件夹(D:\programs\cygwin\bin)?
我认为 hello-world 程序不应该包含任何语法错误,我只是复制了它。另外,当我写
g++ -v
我收到相同的错误消息:该命令无法识别。如果有人给我提示我应该看什么,我将不胜感激。谢谢你。
下面是 hello-world 程序的代码:
我已经安装了 g++,现在当我输入 g++ -v 时,我得到:Reading specs from: \d\cygnus\cygwin-b20\H-i586-cygwin32\bin..\lib\gcc-lib\i586-cygwin32\ egcs-2.91.57\specs gcc 版本 egcs-2.91.57 19980901(egcs-1.1 版本)
在 bin 目录中,我有 g++.exe 和 gcc.exe。我不明白为什么我在上面得到“gcc”而不是“g++”。我不知道这有多重要,但是当我尝试在 DOS 命令提示符下编译程序时收到错误消息:
g++你好.cpp
我得到:
这是我尝试在 cygwin shell 中编译程序时得到的结果:
c++ - g++ 在 Windows 命令提示符下不起作用。安装 Cygwin
我已经安装了 Eclipse 和 CDT(需要在 Eclipse CDT 中使用 C/C++),以及安装 Cygwin 以便我可以编译我的文件。
在环境变量中,我将路径设置为包括以下内容:“C:\cygwin\bin;”
g++、make 和 GDC 都是通过 Cygwin 安装的。我通过在 bin 文件夹中搜索它们来确保这一点——它们都在那里。
如果我在 Windows 命令提示符中输入“make”,则会出现:
如果我在 Windows 命令提示符中输入“g++”或“gdc”,则会出现(或类似):
所以,换句话说,make 正在工作,但其余的都没有……但它们在同一个 bin 文件夹中!让我完全糊涂了。
如果我尝试打开 Cygwin Bash Shell、g++、make 和 GDC 都可以在那里工作。
但是,我需要它在命令提示符下工作,以便 Eclipse 能够编译我在 IDE 中编写的程序。
如果您知道为什么会这样,请告诉我。
c++ - g ++未定义对构造函数的引用
我正在针对预编译的库编译和链接 cpp 文件,并且收到“未定义的引用”错误。
首先,这是命令(有问题的库是 quicknet3,我正在编译的程序是 trapper):
g++ -w -g -I. -g -O3 -pipe -Wall -I/home/install/x86_64/include/quicknet3 -L/home/install/x86_64/lib -lquicknet3 -lintvec -lfltvec -o trapper trapper.cpp CMyException.cpp
这是未定义的参考错误:
/tmp/ccFuVczF.o: In function 'main':
trapper.cpp:1731: undefined reference to 'QN_InFtrLabStream_PFile::QN_InFtrLabStream_PFile(int, char const*, _IO_FILE*, int)'
trapper.cpp(第 1731 行)中的调用是:
IN_PFILE = new QN_InFtrLabStream_PFile(0, "", fp, 1);
其中fp
a 是预先FILE *
分配为调用的结果。fopen
被调用的构造函数在相关的头文件(QN_Pfile.h)中定义,如下:
class QN_InFtrLabStream_PFile : public
QN_InFtrLabStream
{
public:
QN_InFtrLabStream_PFile(int a_debug, const char* a_dbgname, FILE* a_file, int a_indexed);
(... other declarations ...)
}
QN_Pfile.cc中确实给出了构造函数的定义:
QN_InFtrLabStream_PFile::QN_InFtrLabStream_PFile(int a_debug,const char* a_dbgname, FILE* a_file, int a_indexed) : log(a_debug, "QN_InFtrLabStream_PFile", a_dbgname),file(a_file),indexed(a_indexed),buffer(NULL),sentind(NULL)
{
(... the usual constructor stuff :P ...)
}
我自己编译了quicknet3库,没有报错,安装到/home/install/x86_64/lib/libquicknet3.a
所以,我不明白为什么来自 trapper.cpp 的调用无法找到对这个构造函数定义的引用。的 g++ 参数-L/home/install/x86_64/lib -lquicknet3
应该可以解决问题,对吧?
有任何想法吗?
谢谢,罗伊