0

重複の可能性:
静的変数リンク エラー
未定義の参照/未解決の外部シンボル エラーとは何ですか。

さらに別の「未定義参照」メイクファイル問題の投稿を追加して申し訳ありませんが、広範な検索を行っても解決策が見つかりませんでした...

各オブジェクト ファイルは完全に正常にコンパイルされます。最終リンク段階で、リンカー (または make?) は、さまざまな関数や静的クラス変数への「未定義の参照」について不平を言います...

メイクファイル:

CXX = mpic++
CXXFLAGS = -g   -O3   -fopenmp   -std=c++0x     

SOME_DIR=/some/directory

LDFLAGS=   -I$(SOME_DIR) -L$(SOME_DIR)  -Wl,-rpath,$(SOME_DIR) -lsomelib   \
             # ...more libraries...     \
           -Wl,--verbose    -ldl


SOURCES=$(wildcard ./*.cpp)
HEADERS=$(wildcard ./*.h)

OBJECTS=$(SOURCES:.cpp=.o)


all :   $(OBJECTS)  
    $(CXX) $(CXXFLAGS) $(OBJECTS)   $(LDFLAGS)      \
    -o my_prog
    @echo "my_prof executable successfully created."

%.o  :  %.cpp   $(HEADERS)
    $(CXX) $(CXXFLAGS) -o $@  -c    $(LDFLAGS)   $<   

すべての「インクルード ガード」が各.hファイルに配置されています。各オブジェクト ファイルは問題なくコンパイルされます。経由でリンカーから提供される追加の出力を調べて、--verboseリンク先のすべてのライブラリがリンカーによって検出され、すべてのオブジェクト ファイルがリンカーによって正常に開かれることを確認します。

次に、最後の段階で、他のソース/オブジェクト ファイル内の関数への「未定義の参照」を大量に取得します。

./some_object.o: In function `some_class::some_func(int &arg)':
./some_class.cpp:78: undefined reference to 'another_function_defined_in_another_header_file'

また、(パブリック) 静的メンバー変数への未定義の参照:

./main.cpp:473: undefined reference to `some_class::some_static_member_variable_A'
./main.cpp:491: undefined reference to `some_class::some_static_member_variable_B'
./main.cpp:500: undefined reference to `some_class::some_static_member_variable_C'
./main.cpp:511: undefined reference to `some_class::some_static_member_variable_D'
4

0 に答える 0