问题描述
当我尝试将 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 (将#修改为@)