Неопределенная ссылка aiImportfile (assimp) с использованием QT

Я пытался запустить assimp в QT 5.2 для импорта некоторых 3D-объектов, но у меня возникла проблема с (я полагаю) компоновщиком.

Я установил его через cmake, сначала скачав исходные файлы отсюда http://sourceforge.net/projects/assimp/files/assimp-3.0/, затем с помощью cmake для компиляции и установки.

Затем я попытался запустить пример, который они предоставляют в документации

#include <assimp/cimport.h>        // Plain-C interface
#include <assimp/scene.h>          // Output data structure
#include <assimp/postprocess.h>    // Post processing flags

bool DoTheImportThing( const char* pFile)
{
// Start the import on the given file with some example postprocessing
// Usually - if speed is not the most important aspect for you - you'll t
// probably to request more postprocessing than we do in this example.
const aiScene* scene = aiImportFile( pFile,
aiProcess_CalcTangentSpace       |
aiProcess_Triangulate            |
aiProcess_JoinIdenticalVertices  |
aiProcess_SortByPType);
// If the import failed, report it
if( !scene)
{
// DoTheErrorLogging( aiGetErrorString());
return false;
}return true;
}

Но при попытке скомпилировать этот кусок кода, я получаю ошибку

 error: undefined reference to `aiImportFile'
error: collect2: error: ld returned 1 exit status

Я использую 32-битную Linux Mint. У кого-нибудь есть идеи, почему он не связывает? Должен ли я скомпилировать с помощью cmake, используя определенный флаг? Я не смог найти каких-либо специальных флагов в каких-либо постах вокруг.

Спасибо!

0

Решение

Я наконец решил это! По-видимому, в QT есть инструмент для импорта внешних библиотек. Мне просто нужно было щелкнуть правой кнопкой мыши по проекту, выбрать «Добавить библиотеку» и добавить файл, расположенный по адресу /user/local/libassimp.a

Это добавило следующие строки в мой файл .pro:

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../usr/local/lib/release/ -lassimp
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../usr/local/lib/debug/ -lassimp
else:unix: LIBS += -L$$PWD/../../../../../usr/local/lib/ -lassimp

INCLUDEPATH += $$PWD/../../../../../usr/local/include
DEPENDPATH += $$PWD/../../../../../usr/local/include

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/local/lib/release/libassimp.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/local/lib/debug/libassimp.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/local/lib/release/assimp.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../usr/local/lib/debug/assimp.lib
else:unix: PRE_TARGETDEPS += $$PWD/../../../../../usr/local/lib/libassimp.a

Возможно, есть более элегантный способ кодирования, но, по крайней мере, это сработало.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector