微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与 stb 图像一起使用 assimp 库时出现的问题

如何解决与 stb 图像一起使用 assimp 库时出现的问题

当我尝试将 Assimpstb 一起使用时,它表示已经定义了一些函数并且它不会链接

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 举报,一经查实,本站将立刻删除。