問題タブ [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++ ソース ファイルを含む大規模なプロジェクト
- 共通ヘッダー ファイルなし (すべてのソース ファイルに含まれるヘッダーは 1 つもありません)
- 上記のプロジェクトはg ++でコンパイルされ、makeによって管理されます
すべてのソース ファイルを変更して新しいヘッダー ファイルをインクルードすることなく、定義 (マクロなど) をすべてのコンパイル ユニットにインクルードする方法はありますか?
c++ - g++ を使用した Windows 上の Makefile、ライブラリのリンク
私は MSVC++6 にうんざりしていて、誰もがそれはくだらないコンパイラだといつも私に言っていることにうんざりしています。
そこで、vim と g++ および makefile を使用することにしました。これが私の問題です。次のメイクファイルがあります。
これは、ファイルの 1 つで必要なmake
という Windows ライブラリにリンクする必要があるため、 を実行しようとするとエラーが発生します。Ws2_32.lib
Winsock2.h
include
.h
では、これを行うにはどうすればよいですか?-l
オプションを試してみましたが、うまくいきません。スペースを含むパスではどのように機能しますか?
linux - Linux g ++コンパイラはstderrをリダイレクトし、stdoutは空のファイルを作成します
g++ コンパイラの出力 (stderr と stdout の両方) を Linux のファイルにリダイレクトしています。しかし、空のファイルを作成しています。
他の投稿で、stdout がすべての行の後にフラッシュされないことを読みました。それは問題ありませんが、stderr はどうでしょうか。私の場合、複数の画面を実行するとコンパイル エラーが発生します。だから、私は標準エラー出力に興味があります。stdout 出力は作成されません。
上記のコマンドは、「output」という名前の空のファイルを作成します。次のコマンドは、無効な null コマンドを報告します。
cygwin - g++ で -mno-cygwin フラグを使用することによる副作用はありますか?
-mno-cygwin フラグを使用する限り、g++ を使用して外部依存関係のない Windows 実行可能ファイルを作成できることを最近発見しました。私の印象では、コンパイラは cygwin の代わりに MinGW ライブラリを使用しています。
これは、cygwin を使用して gpl ライセンスの問題なしにバイナリをビルドする効果的な方法ですか?
より大きな実行可能ファイル以外に、これによる技術的な副作用はありますか? (つまり、cygwin 固有の機能が失われ、機能が制限されます)
この機能はどこかに文書化されていますか? 数年前のニュースグループの投稿で、それについて説明しているものしか見つかりません。
c++ - Quicktime の代わりに FFMPEG を使用して Mac で OpenCV をコンパイルする
Linux で OpenCV と FFMPEG を使用して実行するコードを開発しています。Mac を使用してこのコードを開発したいと考えており、Mac で FFMPEG 機能が必要です。
次のようにconfigureを実行できました:
しかし、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 を使用しており、g++ C++ コンパイラがインストールされている cygwin をインストールしました。小さな 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 フォルダー (D:\programs\cygwin\bin) に cygwin1.dll があります。また、bin フォルダー (D:\programs\cygwin\bin) がコマンドの検索パスに含まれているかどうかを確認するにはどうすればよいですか?
hello-world プログラムに構文エラーが含まれていてはいけないと思います。コピーしたところです。また、書くときは
g++ -v
コマンドが認識されないという同じエラー メッセージが表示されます。誰かが私に何を見ればいいのかヒントをくれれば幸いです。ありがとうございました。
hello-world プログラムのコードは次のとおりです。
g++ をインストールしましたが、g++ -v と入力すると、次のように表示されます。 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 シェルでプログラムをコンパイルしようとすると、次のようになります。
c++ - ./configure の実行中に ccshared=-fPIC を設定するにはどうすればよいですか?
RHEL 5でQGIS用の Python 2.6 をビルドしようとしています。QGIS の作成中に次のエラーが発生します。
このエラーからわかることは、Python 2.6 を何らかのフラグでビルドする必要があるということです-fPIC
。OK、configure.in
ファイルで見つけましたが、いくつかの条件をチェックし、それらの条件に基づい-fPIC
てCCSHARED
フラグに割り当てます。
私がしたことは、すべての条件がチェックされた後、次の行を意図的にCCSHARED
as として使用するために追加したこと-fPIC
です。
しかし、それはうまくいきませんでした..
CCSHARED
として設定したいことを構成中に指定する方法は-fPIC
?
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
で、事前に呼び出し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
うまくいくはずですよね?
何か案は?
ありがとう、ロイ