2013-11-27 97 views
0

在實際上首先討論問題之前,我認爲值得一提的是,我很新的鏈接庫和其他與我無關的東西。我學到了關於開源項目/遊戲/等等編程的知識以及谷歌(和Thenewboston的Bucky有關C++的任何事情)。我還問了一些問題,然後做了一些公正的研究:但是無論如何:Zlib鏈接問題

問題本身從這裏開始

我使用的代碼塊(最新版本,我不知道那是什麼,此刻)

我試圖使用fallahn的SFML瓷磚地圖加載器,到目前爲止,我已經成功靜態鏈接SFML,並將地圖加載器文件包含在源代碼中,並將其添加到搜索目錄中,但是,我無法連接zlib(wh ICH地圖加載器使用)

我會繼續前進,步行通過我怎樣與zlib的,因爲我什至不知道我上搞砸了這一步:

  1. 很明顯,我在繼續到http://zlib.net,抓住最新版本(1.2.8)
  2. 我把它解壓縮到我的桌面
  3. 我走進我的項目的編譯選項,最初我想:「我就在全球建立了我的搜索目錄像以前一樣」 (對於SFML和地圖加載器,有一個'include'和'lib'文件夾,我把'include'放在編譯器搜索d中irectory和鏈接器搜索目錄中的'lib'),除了我從解壓縮得到的文件夾中沒有名爲'include'或'lib'的文件夾。這是我簡單地包括我解壓縮的整個文件夾(我很肯定這是可怕的做法,但我不知道還有什麼要做)

  4. 我編譯了一個來自Map loader的源文件的例子,在4次不同的場合中出現了「未定義的膨脹參考」的錯誤。我已經想到了這一點,我在鏈接時犯了一個錯誤,所以那時我就去了谷歌。大多數的答案是簡單的「添加-lz」或「鏈接libz進行」

好了,我不知道什麼是「添加-lz」是指..像所有,所以我只是掛「libz進行」,然後我的編譯器給了我錯誤「ld.exe找不到-lz」,這導致我假設鏈接libz和添加-lz是相同的事情。

無論如何,這裏有些東西我根本不懂,如果你不能解釋它們是什麼,請至少解釋一下如何盲目做: 1.編譯庫 2.任何東西關於make文件,我不知道他們是什麼或者他們做了什麼 3.將命令添加到項目命令行中。

對不起,如果這是相當長的,但我覺得介紹是必要的,因爲也許有人可以鏈接到我可能需要的任何補充知識,這將是有益的,但預先感謝閱讀。

編輯:

建立消息:

C:/文件和設置/布倫達/桌面/ SFML-tmxloader主/ SRC/MapLoaderPrivate.cpp:834:未定義參照inflateInit2_' C:/Documents and Settings/Brenda/Desktop/sfml-tmxloader-master/src/MapLoaderPrivate.cpp:843: undefined reference to充氣」 Ç :/ Documents and Settings/Brenda/Desktop/sfml-tmxloader-master/src/MapLoaderPrivate。CPP:852:未定義參照inflateEnd' C:/Documents and Settings/Brenda/Desktop/sfml-tmxloader-master/src/MapLoaderPrivate.cpp:881: undefined reference to inflateEnd」 collect2.exe:錯誤:LD返回1個退出狀態 過程終止狀態1(0分鐘,10秒) 4錯誤,0警告(0分鐘,10秒)

+0

你能顯示你配置正在創建的鏈接命令嗎? – woolstar

+0

編譯器選項-lsomething告訴編譯器去找到一個名爲libsomething.a的文件(或任何平臺適當的文件擴展名),並與它鏈接。 – woolstar

+0

@woolstar如何訪問正在創建的配置? – user1538301

回答

0

問題是,zlib沒有直接爲MinGW提供二進制文件,它們只提供* .lib,* .def和* .dll文件,但爲了與MinGW/GCC鏈接,您需要一個*。一份文件。 既然zlib是一個C庫,ABI將是相同的,因此您可以「簡單地」轉換它,例如在lib2a的幫助下。雖然這應該起作用,但下載源代碼並自己構建zlib可能仍然會更好,因爲它附帶了CMake文件,所以構建起來相當容易。