基本的な配列ラッパーテンプレートクラスを.oファイルにコンパイルしようとしていますが、動的ライブラリを作成する方法を理解しようとしています。ただし、ソースをg ++で空のオブジェクトファイルが生成される
g++ -std=c++0x -c array.cpp
でコンパイルすると、結果ファイルは約650バイトにすぎません。 -std = C++ 0Xフラグなしでコンパイルされたとき、彼らがそうであるように、私は、NMでファイルを調べ、それが含まれるシンボルのみがC++ 11のコンパイルの特徴であると思わ
00000001 r _ZStL13allocator_arg
00000000 r _ZStL19piecewise_construct
た見出さ行った。
プログラムのテストコードをコンパイルしようとすると、すべてのコマンドで
g++ -std=c++0x -o tester tester.cpp array.cpp
がarray.cppにすべてのためのリンカエラーを生成しますが、それ以外はきれいにコンパイルされます。
私は正に、これで何が起こっているのか分かりません。 array.cppとarray.hppの内容は、コンパイル方法ではなく、コード自体で問題があると思われる場合に投稿できます。
インスタンス化されていないテンプレートをコンパイルしようとしていますか? – ildjarn
テンプレートはコード生成ツールほどのコードではありません。実際のコードのみがコンパイルされます。 –
これは、配列としてtester.cppでインスタンス化されます。私はtester.cppなしでコンパイルしようとしました。なぜなら、.cpp内のすべての関数にかかわらず、2番目の(時系列に最初の)コンパイルコマンドでリンカーエラーが発生していた理由を理解するためです。 –