私は単純な間違いを犯したと思いますが、どれを取得していません..とにかく、私はライブラリに取り組んでおり、プロジェクトの Makefile を構築するために cmake を使用しています: https://github.com/immapoint/ NaNO3/ブロブ/マスター/CMakeLists.txt
ライブラリをコンパイルすると、すべてが正常に機能します。次のファイルをビルドします。
bin/libNaNO3.dll
lib/libNaNO3.dll.a (I don't like that name as well)
全体をテストするために、同じく cmake を使用して別のプロジェクトをセットアップしました。https://github.com/immapoint/NaNO3TestApp/blob/master/CMakeLists.txt
ライブラリをテストするためのメイン ファイルは次のようになります: https://github.com/immapoint/NaNO3TestApp/blob/master/src/main.cpp
しかし、メイン ファイルのコンパイルに関しては、次のエラーが発生します。
CMakeFiles/NaNO3TestApp.dir/objects.a(main.cpp.obj):main.cpp:(.text+0xbf): undefined reference to `nano::Event<int>::attach(std::function<void(int)> *)`
CMakeFiles/NaNO3TestApp.dir/objects.a(main.cpp.obj):main.cpp:(.text+0xd3): undefined reference to `nano::Event<int>::notify(int)`
[...]ld.exe: CMakeFiles/NaNO3TestApp.dir/objects.a(main.cpp.obj): bad reloc address 0x8 in section `.rdata'
このエラーは、make/cmake を使用してプロジェクトをビルドしている場合でも、ソース ファイルを直接コンパイルしている場合でも発生します。
g++ -Wall -pedantic -ansi -std=c++0x main.cpp [-L./lib -I./include] -lNaNO3
したがって、問題はcmakeではなくldにあるようです。私は CMake バージョン 2.8 と GCC バージョン 4.7.2 を含む MinGW を使用しています。
追加情報:
-fPIC を使用したコンパイラ出力: