2015-08-13 71 views
0

目前我正在學習使用名爲「三頭肌」的庫。我在linux平臺上使用qt-creator,編譯器是鐺聲。QT有第三方庫的未定義參考

的錯誤消息是

/home/developer/Projects/trytriceps/main.cpp:11: error: undefined reference to `Triceps::Unit::Unit(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' 

我的.pro文件中是這樣的。

QT  += core 

QT  -= gui 

TARGET = trytriceps 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 

SOURCES += main.cpp 

LIBS += -stdlib=libc++ 
INCLUDEPATH += /home/developer/Projects/triceps-2.0.1/cpp 
# This path contains libtriceps.a and libtriceps.so. 
LIBS += -L/home/developer/Projects/triceps-2.0.1/cpp/build 
LIBS += -ltriceps 

QMAKE_CXXFLAGS += -stdlib=libc++ 
QMAKE_CXXFLAGS += -std=c++11 

我的main.cpp文件是

#include <iostream> 
#include <utest/Utest.h> 
#include <sched/Unit.h> 
using namespace std; 

int main() 
{ 
    cout << "hello world" << endl; 

    Autoref<Unit> hwunit = new Unit("my unit"); 

    cout << hwunit->getName() << endl; 

    return 0; 
} 

我試圖鏈接以這種方式boost_regex庫和它的作品。誰能幫我?謝謝。

+1

你可以嘗試一個快速ldd libtriceps.so來看看是否有一些庫鏈接丟失? –

+0

@BertrandMartel什麼是'ldd libtriceps.so'?謝謝! – sakonque

+0

打開一個控制檯,到你的libtriceps.so目錄並鍵入ldd libtriceps.so(ldd將打印這個lib的共享庫) –

回答

0

原來是生成問題(即使make test仍然失敗),我不再有未定義的錯誤。你的項目文件也在工作。

如果你有仍然是問題,這裏有共享和靜態庫我建:

libtriceps.zip(包含所有CPP目錄) https://mega.co.nz/#!wENQUQoK!LIbeVH8gB94oS-zBrIlGHQ0iAICiRW6dOx620AInh0o

如果您仍然有問題,確保你已經做了好乾淨,並重新生成一個新的Makefile與qmake

+0

原來爲.a和.so創建了一個新的錯誤:-1:錯誤:在搜索-ltriceps時跳過不兼容的/home/developer/Projects/cpp/build/libtriceps.so – sakonque

+0

實際上,我是在libC++下使用clang ++作爲編譯器。我是否需要將我的編譯器更改爲gcc而不使用libC++?有關係嗎?謝謝! – sakonque

+0

我不知道我的lib是32位體系結構,也許這就是爲什麼它會失敗我會嘗試在另一個64位計算機上構建 –