2011-08-18 9 views
1

首先,这是在Linux上构建的。基于wxObject的类无法链接

我们有一个基于wxObjects(我们不使用的GUI对象)的API。我们的课程定义如下:

#include <wx/wx.h> 

class apibaseclass : public wxObject 
{ 
    apibaseclass(); 
    ~apibaseclass(); 
} 

大约五年前这个编译和链接就好了。我一直要求修改,现在我得到以下错误:

未定义参考wxObject::wxObject()'/home/lloyd/Projects/wxtestprogram/main.cpp:7: undefined reference to wxObject :: wxObject()”

这是我用一个理智的测试程序:

#include <iostream> 
#include <wx/wx.h> 

class blah : public wxObject 
{ 
public: 
int x; 

blah(); 
virtual ~blah(); 

void setvalue(int value); 
int getvalue(); 
}; 

blah::blah() 
{ 
} 


blah::~blah() 
{ 
} 

void blah::setvalue(int value) 
{ 
    x = value; 
} 

int blah::getvalue() 
{ 
    return x; 
} 


using namespace std; 

int main() 
{ 
    class blah *testvalue = new blah(); 

    testvalue->setvalue(15); 

    wxPrintf(wxT("Hello World 2 %d\r\n"), testvalue->getvalue()); 

    wxString str1 = wxT("Linux"); 

    wxString str2 = wxT("Operating"); 

    wxString str3 = wxT("System"); 

    wxString str; 
    str = str1 + wxT(" ") + str2 + wxT(" ") + str3; 

    wxPuts(str); 
    wxPrintf(wxGetHomeDir()); 


    long int mem = wxGetFreeMemory(); 

    wxPrintf(wxT("Memory: %ld\n"), mem); 
    return 0; 
} 

什么是麻烦的是,如果我取代“公共wxObject”与“公共wxString”,那么它链接就好了。为什么我无法访问wxObject?!?

注:我从来没有反对比过去libwx_baseu-2.6.so以外的任何链接。事实上,当我没有GUI时,它只能编译libwx_baseu-2.6,libwx_baseu_net-2.6和libwx_baseu_xml-2.6。

什么我需要做的事情的建筑,并以最少搞乱和大惊小怪再次连接的?

+0

好的,我想通了。使用“wxconfig --cxxflags --libs base”给了我需要的标志,现在它链接并正确地编译。 –

回答

0

使用

wx-config --cxxflags --libs base 

给了我,让我正确生成项目缺少的项目。毫无疑问,这是我五年前使用的。