如何解决与 stb 图像一起使用 assimp 库时出现的问题
当我尝试将 Assimp 与 stb 一起使用时,它表示已经定义了一些函数并且它不会链接。
CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(TestProject)
add_executable(TestProject "main.cpp")
set(BUILD_SHARED_LIBS OFF)
add_subdirectory("vendor/assimp")
target_include_directories(TestProject PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/vendor/stb")
target_include_directories(TestProject PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/vendor/assimp/include")
target_include_directories(TestProject PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/vendor/assimp/include")
target_link_libraries(TestProject PUBLIC assimp)
main.cpp
#include <iostream>
#include "assimp/Importer.hpp"
#include "assimp/scene.h"
#include "assimp/postprocess.h"
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
int main(){
std::cout << "Hello World" << std::endl;
int width,height,nrChannels;
uint8_t* data = stbi_load("image.jpg",&width,&height,&nrChannels,0);
Assimp::Importer importer;
stbi_image_free(data);
std::cin.get();
}
这是我从中得到的输出。 stb 文件中的一些函数似乎无法正确链接。
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_from_memory already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_from_callbacks already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_from_file already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_gif_from_memory already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_16_from_memory already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_16_from_callbacks already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_16 already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_load_from_file_16 already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_loadf_from_memory already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_loadf_from_callbacks already defined in main.obj
4>assimp-vc142-mtd.lib(PbrtExporter.obj) : error LNK2005: stbi_loadf already defined in main.obj
...
我是从源文件构建的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。