所以,我有一個C++項目,我想要可視化的東西(實時),所以我正在尋找一個渲染引擎,並發現bgfx。正確設置bgfx(和項目結構)
我不會經常寫C++的東西,而使用第三方項目似乎令人難以置信 辛苦,但也許我只是做了一切錯誤,希望你能把我推向正確的方向。
我的第一次嘗試是在Linux上,我克隆bgfx.cmake並遵循自述,然後我 使用make install
其安裝在圖書館的到「的/ usr /本地/包括」。
這似乎起初工作,因爲我的IDE(CLION)在使用#import
時識別bgfx。
然後我試着讓HelloWorld例子工作。我最終將bgfx示例文件夾複製到我的項目下的子文件夾「thirdparty」中,因爲所有示例都高度使用「examples/common」文件夾。
,我想我做什麼毛病我的CMakeLists.txt,因爲雖然我的IDE可以解決和自動完成一切,我得到一個編譯錯誤,當我嘗試運行項目:上線
Unresolved references 'entry::runApp(entry::AppI*, int, char**)'
ENTRY_IMPLEMENT_MAIN(ExampleClass)
其中ENTRY_IMPLEMENT_MAIN是bgfx定義的宏(here)。
幾個煩人小時,我決定從頭開始後
:
我犯了一個項目「bgfx_test」與在第三方文件夾我克隆bgfx.cmake項目子文件夾「第三方」,並補充add_subdirectory("thirdparty/bgfx.cmake")
到我的CMakeLists.txt
我再次做了一個main.cpp,我從bgfx示例添加了ExampleHelloWorld類。
我改變它有一個空的update()方法,所以我不需要這個例子中的logo.h和screeshot.png文件。我改變了包括到:
#include "thirdparty/bgfx.cmake/bgfx/examples/common/common.h"
#include "thirdparty/bgfx.cmake/bgfx/examples/common/bgfx_utils.h"
同樣的錯誤再次,我的IDE但是編譯器說自動填充的一切:
Nicht definierter Verweis auf 'entry::runApp(entry::AppI*, int, char**)'
(未解析的引用)
如果有人可以幫助我,那太棒了
我的文件夾結構:
project-root
main.cpp
CMakeLists.txt
thirdparty
bgfx.cmake (clone of the repo mentioned above)
我的CMakeLists。TXT:
cmake_minimum_required(VERSION 3.7)
project(bgfx_test)
set(CMAKE_CXX_STANDARD 14)
set(SOURCE_FILES main.cpp)
add_executable(bgfx_test ${SOURCE_FILES})
add_subdirectory("thirdparty/bgfx.cmake")
後,我試圖用fips 後,我增加了一些符號鏈接的依賴
(東西像連接libXinerama.so
到libXinerama.so.1
因爲FIPS找不到它的工作將其設置它與'.1'在最後)
所以現在我可以運行的例子,甚至在Windows上設置項目工作 - 至少爲例子。
,但我真的很想在「bgfx/exampels」文件夾
不寫我的應用程序,但我不能得到它的它外面工作,即使設立時這樣
編輯
,因爲它似乎沒有足夠清楚:
我的問題:
- 爲什麼我得到未解決的參考錯誤?對我來說這根本沒有意義。
- 當在窗口(如文檔中)或通過fips設置bgfx時,如何在不在第三方庫的「示例」文件夾中編寫代碼的情況下使其工作?
那就太好看的CMakeLists.txt一個小小的例子,或只是告訴我,什麼是錯與我
編輯2(2017年5月27日):在我
加入
target_link_libraries(bgfx_test bx)
target_link_libraries(bgfx_test bgfx)
target_link_libraries(bgfx_test bimg)
我的CMakeLists.txt我得到了一個錯誤:
/usr/bin/ld: thirdparty/bgfx.cmake/libbgfxd.a(glcontext_glx.cpp.o): undefined reference to symbol 'XFree'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
其中唯一有用的命中谷歌產生是this,但它是沒有答案:/
你希望有人寫** **骨架例子爲'bfgx'?這太寬泛了。你想幫助**現有的**例子嗎?那麼你需要提供它的代碼。另外,在問題結尾處,您似乎可以解決問題。那麼,你想**完全**? – Tsyvarev
我試圖澄清一點:我只是想使用bgfx作爲第三方應用程序,而不是在他們的示例文件夾中編寫我的代碼。我想知道爲什麼我的IDE可以解決所有問題,但編譯器會報錯。 爲什麼使用第三方軟件設置C++項目本質上很難? – Soraphis
當自動完成時,IDE會查找*聲明該函數的標頭。錯誤「無法解析的參考」意味着找不到函數的**定義**。函數在'.c'代碼中或在您鏈接的庫中定義。 – Tsyvarev