2016-03-21 27 views
0

CMakeでビルドしてMinGWでコンパイルしたいプロジェクトがあります。プロジェクトはZlibを使用します。私はCMakeのでビルドすると、私はエラーを取得していないが、私はMinGWのは、makeを実行するとき、それは次のように出力できます:MinGW/CMake ZLibへの未定義参照

C:\Projects\MultiMCBuild>C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe 
. 
. 
. 
[ 50%] Linking CXX shared library ..\libMultiMC_logic.dll 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x1f6c): undefined reference to 'z_inflateEnd' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x29e2): undefined reference to 'z_inflateInit2_' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x2a6d): undefined reference to 'z_get_crc_table' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x2ca7): undefined reference to 'z_inflateEnd' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x2f52): undefined reference to 'z_inflateInit2_' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x2f77): undefined reference to 'z_inflateEnd' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x3239): undefined reference to 'z_inflateInit2_' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x3317): undefined reference to 'z_inflateEnd' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x3626): undefined reference to 'z_crc32' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x371f): undefined reference to 'z_inflate' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x376a): undefined reference to 'z_crc32' 
C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):unzip.c:(.text+0x3a57): undefined reference to 'z_inflateEnd' 
C:/Qt/Tools/mingw492_32/bin/../lib/gcc/i686-w64- mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: C:/Projects/MultiMCBuild/External/Install/QuaZIP/lib/libquazip.a(unzip.c.obj):  bad reloc address 0x20 in section `.eh_frame' 
collect2.exe: error: ld returned 1 exit status 
logic\CMakeFiles\MultiMC_logic.dir\build.make:3186: recipe for target 'libMultiMC_logic.dll' failed 
mingw32-make[2]: * * * [libMultiMC_logic.dll] Error 1 
CMakeFiles\Makefile2:1806: recipe for target 'logic/CMakeFiles/MultiMC_logic.dir/all' failed 
mingw32-make[1]: * * * [logic/CMakeFiles/MultiMC_logic.dir/all] Error 2 
makefile:159: recipe for target 'all' failed 
mingw32-make: * * * [all] Error 2 

誰もが、私はこれを修正するために何ができるかの手掛かりを持っているの?私はコードがZLibライブラリを見つけることができないことを読んで、どのようにリンクするのですか?

EDIThereは私のCMakeLists.txtです。私はGitプロジェクトからこれを入手しました。

+0

zlibも同じコンパイラでビルドしましたか? (もしそうでなければ、それをしてください) –

+0

あなたは 'CMakeLists.txt'ファイルの最小限の例を追加できますか? (ZLibがCMakeでビルドされていれば)単純に欠落している可能性があります。もし存在しないバイナリ(prebuildの場合)や、ZLibへの参照がCMake設定に完全に欠落している可能性もあります。それは別のコンパイラで動作しますか? – Florian

+0

私はZLibコンパイルされたDLLをダウンロードし、Gitリポジトリからプロジェクトをクローンしました。すべてが私の環境に何か問題があることを指摘しています – user3099265

答えて

0

エラーを再現するための小さな例を生成しようとしました。私は

cmake_minimum_required(VERSION 3.4) 
project(zlib_test) 
set(ZLIB_TEST_SOURCES zpipe.c) 
add_executable(${PROJECT_NAME} ${ZLIB_TEST_SOURCES}) 

http://zlib.net/zpipe.c

私の最初のCMakeLists.txtのzlibのホームページから私のテストファイルを取って、私は、このフォーム

cmake_minimum_required(VERSION 3.4) 
project(zlib_test) 

find_package(ZLIB REQUIRED) 
if (ZLIB_FOUND) 
    include_directories(${ZLIB_INCLUDE_DIRS}) 
endif() 

set(ZLIB_TEST_SOURCES zpipe.c) 

add_executable(${PROJECT_NAME} ${ZLIB_TEST_SOURCES}) 
target_link_libraries(${PROJECT_NAME} ${ZLIB_LIBRARIES}) 
CMakeLists.txtを変更した後、同じエラーに

[ 50%] Building C object CMakeFiles/zlib_test.dir/zpipe.c.o 
[100%] Linking C executable zlib_test 
CMakeFiles/zlib_test.dir/zpipe.c.o: In function `def': 
zpipe.c:(.text+0x65): undefined reference to `deflateInit_' 
zpipe.c:(.text+0xcd): undefined reference to `deflateEnd' 
zpipe.c:(.text+0x135): undefined reference to `deflate' 
zpipe.c:(.text+0x1cf): undefined reference to `deflateEnd' 
zpipe.c:(.text+0x25d): undefined reference to `deflateEnd' 
CMakeFiles/zlib_test.dir/zpipe.c.o: In function `inf': 
zpipe.c:(.text+0x2eb): undefined reference to `inflateInit_' 
zpipe.c:(.text+0x353): undefined reference to `inflateEnd' 
zpipe.c:(.text+0x3a4): undefined reference to `inflate' 
zpipe.c:(.text+0x404): undefined reference to `inflateEnd' 
zpipe.c:(.text+0x476): undefined reference to `inflateEnd' 
zpipe.c:(.text+0x4a6): undefined reference to `inflateEnd' 
collect2: error: ld returned 1 exit status 
make[2]: *** [zlib_test] Error 1 
make[1]: *** [CMakeFiles/zlib_test.dir/all] Error 2 
make: *** [all] Error 2 

を得ました

私はコンパイルできますプログラム。

問題は次のとおりです。にZLIBはどこに追加されましたか?少なくとも、find_package(ZLIB REQUIRED)という行が必要です。