2017-08-28 69 views
2

我想安裝Assimp在我的項目中使用,但我遇到了一些麻煩。目前我使用的是贏得10親和Visual Studio 2017年15Assimp模型加載庫安裝/鏈接故障

  1. 我已經下載Assimp 4.0.1.zip,是解壓到一個目錄下,加載cmakeGui就跑配置兩次,然後生成到Assimp /編譯目錄。

  2. 接下來我進入了Assimp/build,我運行了Assimp.sln並選擇了我認爲是的ALL_BUILD。然後,我複製了與.lib和.dll一起的/ code/debug中的所有文件,並將它們全部移到我的項目的Debug目錄中,在該目錄中構建了exe文件。我將.lib複製到我的opengl/libs目錄中,並將最初提取的下載中的/ include中的所有標題複製到我的opengl/includes/assimp目錄中。

  3. 最後,我調整我的項目連接器設置爲包括assimp.lib和assimp.dll(別名爲這篇文章的簡單)

當我試圖建立項目它說,它不能打開DLL和試驗,當我複製DLL到項目目錄旁邊的main.cpp和我的其他文件,並再次運行,這一次說「無效或損壞的文件:在的0x378無法讀取」


它的安全說我需要研究編譯,鏈接和釐米阿克,但現在我開始了。

我以爲我讓它停止工作(也許我會......),當我將它包含到我的項目中時,我停止了抱怨。爲此,我從新創建的Assimp開始,與之前一樣,將所有帶有dll的文件移動到我的libs目錄中,將所有包含的內容從下載文件轉儲到我的包中,並將config.h從構建版本移動到此目錄中。然後我在項目中設置鏈接器設置,並且沒有將任何東西移動到我的項目目錄中。

之後,它停止抱怨,所以我繼續我正在關注的教程系列。我編譯了一些錯誤,將它們修正爲0,然後突然間我找到了8個新的錯誤。

嚴重性代碼說明項目文件的線路抑制狀態 錯誤LNK2019解析的外部符號_aiGetMaterialTextureCount在函數引用? 「市民:無符號整數__thiscall aiMaterial :: GetTextureCount(枚舉aiTextureType)常量」(GetTextureCount @ aiMaterial @@ QBEIW4aiTextureType @@@ Z )opengl_model_loading F:\桌面\我的文檔\ TUTS \的OpenGL \入門\ opengl_model_loading \ opengl_model_loading \ main.obj 1

這個錯誤給了我,這可能是由於該DLL的感覺開始。 請指教。

回答

1

我剛剛自己做了這個&會說v401 &有很多麻煩或者連接問題。成功地跟隨我的工作;

注意:ASSIMP具有增強作爲依賴性。

  1. 下載/克隆主資產進口商 - 庫從GitHub: https://github.com/assimp/assimp
  2. 開放的CMake GUI &一旦打開:

    • 在哪裏的源代碼:」 .. \我的文檔\ assimp \ assimp-master「
    • 何處構建二進制文件:」.. \ MyDocuments \ assimp \ assimp-master \ build「。你需要製作一個構建文件夾&點Cmake它。

    2.1。另外,如果你熟悉命令行選項:使用

    • 的cmake -G」的Visual Studio 14 Win64" 的
  3. 單擊配置生成相關的路徑項目文件
  4. 然後生成確認。選擇正確的構建選項即VS15 2017年的64位。
  5. 加載 「.. \我的文檔\ assimp \ assimp主\建造\ Assimp.sln」 與Visual Studio。
  6. 右擊 「ALL_BUILD」 &選擇 「生成」。氏s將需要幾分鐘時間。一旦完成&沒有錯誤,就應該在 .. \我的文檔\ assimp \ assimp主\建造\代碼創造必要的* .dll/*。LIB \調試
  7. 鏈接&包括到現有項目的相關* .LIB &也 「.. \ MyDocuments \ assimp \ assimp-master \ include \ assimp」文件夾。您還需要確保* .dll文件與您正在運行的* exe文件位於相同的文件夾或包含的文件中。
  8. 您可能還需要從拷貝過來.. \我的文檔\ assimp \ assimp主\建造\包括\ assimp \ config.h中的」 &包括在STEP7。

只要確保你建立正確的庫爲您的代碼,即32位/ 64位/調試/發佈/ Unicode的/等,否則可能會遇到的問題依然。

以下的影片是視覺斜有用。 https://youtu.be/W_Ey_YPUjMk

希望這有助於。

編輯: 如果你想靜態庫版本,即沒有所需的.dll: 從上面的步驟:

5.1。將相關項目配置類型&擴展名從.dll更改爲.lib類型(應爲兩個:assimp & zlib)。

5.2。右鍵單擊「UpdateAssimpLibsDebugSymbolsAndDLLs」 - >屬性 - >生成事件&將命令行節中的路徑從.. \ Path * .dll更新爲.. \ Path * .lib。 (如果遇到錯誤,請在assimp_cmd項目上執行相同的操作)。

  • 同上,但現在還需要將項目鏈接到IrrXML.lib & zlibd.lib。不再需要* .dll文件。
  • +0

    很高興你也能工作,我設法讓它工作一陣子,忘了更新這個。我做了一切的全新安裝,並確保該平臺是適當的,遵循基本上與我的問題相同的步驟,並確保正確地鏈接它,並將.dll放在我的項目的.exe版本旁邊。 – eternalNoob

    +0

    是的,有時重新開始有幫助。剛剛獲得靜態庫版本,即不需要.dll。將更新信息的細節。 – ReturnVoid