簡體   English   中英

使用 tinygltf 和 sfml 實現 STB 圖像

[英]STB Image Implementation with tinygltf and sfml

我在我的項目中同時包含了 tinygltf 和 sfml。 當我在這些選項中包含 tinygltf 時:

#define TINYGLTF_IMPLEMENTATION
#define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include <tiny_gltf.h>

我收到多個定義錯誤:

/usr/bin/ld.gold: error: sfml/lib/libsfml-graphics-s.a(ImageLoader.cpp.o): multiple definition of 'stbi_write_jpg'
/usr/bin/ld.gold: _objs/client_lib/loader.pic.o: previous definition here

這只是錯誤的一小部分,但對於大多數 stb 函數,存在類似的錯誤。 所以我試圖通過像這樣包含 tinygltf 來解決這個問題:

#define TINYGLTF_IMPLEMENTATION
#include <tiny_gltf.h>

但是,現在只有一個單一的錯誤:

_objs/client_lib/loader.pic.o:loader.cpp:function tinygltf::LoadImageData(tinygltf::Image*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, int, int, unsigned char const*, int, void*): error: undefined reference to 'stbi_is_16_bit_from_memory'

似乎這兩個庫依賴於略有不同的 stb 版本。 有沒有什么辦法解決這一問題?

我使用的是 tinygltf 2.2.0 版和 sfml 2.5.1 版。

由於您靜態鏈接 SFML,因此您將 SFML 的所有符號集成到您的應用程序中,包括 STB 符號。

我在這里看到兩種不同的解決方案,也許還有更多:

  • 更新SFML extlibs/目錄中的STB頭文件並重建SFML
  • 動態鏈接 SFML,因此您的應用程序看不到 SFML STB 符號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM