Во-первых, это строится на Linux.
У нас есть API, основанный на wxObjects (мы не используем объекты GUI). Наши классы определены следующим образом:
#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;
}
Что беспокоит, так это то, что если я заменю «public wxObject» на «public wxString», то он просто отлично связывается. Почему я не могу получить доступ к wxObject?!?
ПРИМЕЧАНИЕ. В прошлом я никогда не ссылался ни на что, кроме libwx_baseu-2.6.so. И фактически, когда я собираю без GUI, он собирает только libwx_baseu-2.6, libwx_baseu_net-2.6 и libwx_baseu_xml-2.6.
Что мне нужно сделать, чтобы все налаживалось и снова связывалось с минимальной суматохой и суетой?