Assimp 与 mingw-w64 (WinBuilds) 的链接错误
Assimp linking error with mingw-w64 (WinBuilds)
我正在尝试编译将 assimp 与 mingw-w64 (x86_64-w64-mingw32-g++) 结合使用的项目,linker 会产生以下错误:
render/model.o: In function `Model::loadModel(std::string)':
render/model.cpp:9: undefined reference to `Assimp::Importer::Importer()'
render/model.cpp:15: undefined reference to `Assimp::Importer::GetErrorString() const'
render/model.cpp:20: undefined reference to `Assimp::Importer::~Importer()'
render/model.cpp:20: undefined reference to `Assimp::Importer::~Importer()'
render/model.o: In function `Assimp::Importer::ReadFile(std::string const&, unsigned int)':
include/assimp/Importer.hpp:653: undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
看起来 linker 不能 link 带有项目的 assimp 动态库。我使用 .dll 和 .lib 文件,从最新的 assimp 源代码(使用 CMake 和 Visual Studio)编译,linker 找不到的函数在 dll 和 lib 中显示(使用 dumpbin).所有文件都是 x64 位的。
我是这样编译的:
x86_64-w64-mingw32-g++ -o main main.o <... other object files ...> -std=c++11 -Werror -Isrc -Iinclude -g -m64 -L ./lib -lgdi32 -lglu32 -lglew32 -lzlib1 -lopengl32 -lglfw3 -lirrKlang -lassimp
已经尝试使用旧的预编译二进制文件,它产生相同的结果。尝试使用 mingw-w64 编译 assimp,但失败了。
有什么想法导致 linker 看不到函数吗?
我用 MSYS2 (g++ 10.2.0) 替换了 WinBuild (g++ 4.8.0),并用 mingw 重新编译了 assimp。现在项目中的所有内容都可以正常编译。
我正在尝试编译将 assimp 与 mingw-w64 (x86_64-w64-mingw32-g++) 结合使用的项目,linker 会产生以下错误:
render/model.o: In function `Model::loadModel(std::string)':
render/model.cpp:9: undefined reference to `Assimp::Importer::Importer()'
render/model.cpp:15: undefined reference to `Assimp::Importer::GetErrorString() const'
render/model.cpp:20: undefined reference to `Assimp::Importer::~Importer()'
render/model.cpp:20: undefined reference to `Assimp::Importer::~Importer()'
render/model.o: In function `Assimp::Importer::ReadFile(std::string const&, unsigned int)':
include/assimp/Importer.hpp:653: undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
看起来 linker 不能 link 带有项目的 assimp 动态库。我使用 .dll 和 .lib 文件,从最新的 assimp 源代码(使用 CMake 和 Visual Studio)编译,linker 找不到的函数在 dll 和 lib 中显示(使用 dumpbin).所有文件都是 x64 位的。
我是这样编译的:
x86_64-w64-mingw32-g++ -o main main.o <... other object files ...> -std=c++11 -Werror -Isrc -Iinclude -g -m64 -L ./lib -lgdi32 -lglu32 -lglew32 -lzlib1 -lopengl32 -lglfw3 -lirrKlang -lassimp
已经尝试使用旧的预编译二进制文件,它产生相同的结果。尝试使用 mingw-w64 编译 assimp,但失败了。
有什么想法导致 linker 看不到函数吗?
我用 MSYS2 (g++ 10.2.0) 替换了 WinBuild (g++ 4.8.0),并用 mingw 重新编译了 assimp。现在项目中的所有内容都可以正常编译。