ошибка линковки (linux, g++)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
ошибка линковки (linux, g++) - 2009-05-01 22:20:18.423333
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
добрый день. вобщем, есть следующая проблема. имеется некая библиотека граф интерфейса, на основе другой библиотеки (SDL). Данный проект был написан под винды как динамическая библиотека. Встала проблема переписать его под линух. После некоторых мучений с причесанием кода под g++, наконец то получил объектные модули. Далее командой "ar" собрал свою либу (пока статическую), передав ей все объектные файлы (сразу скажу их много, 30 штук, т.е 30 cpp файлов). Все успешно собралось, и я обрадованный начал писать тестовое приложение. Скомпилилось оно тоже без ошибок. При линковани передавал все записимые либы. И получаю ошибку следующего содержания:
libMYLib.a(rapplication.o): In function `Application::setScreen(SDL_Surface*)':
application.cpp:(.text+0x22b4): undefined reference to `ColorManager::BlendingMapPtr::BlendingMapPtr()'
где libMYLib.a - моя собранная либа. на самом деле ошибок там больше, но все они сводятся к "ненахождению" линкером функции ColorManager::BlendingMapPtr::BlendingMapPtr(). По логике вещей, она должна быть в моей либе. весь код я по религиозным соображениям я поместить не могу (да и вряд ли вы будете разбираться в 30 файлах, в каждом по 3000-5000 строк кода). но некоторый всеж выложу.
bool Application::setScreen(SDL_Surface* surface)
{
m_screen = surface;
if (m_screen == 0)
return false;
m_screenRect = Rect(0, 0, surface->w, surface->h);
if (pApp) {
Widget* wt = firstTopLevelWidget();
while (wt) {
wt->eventScreenChanged();
wt = wt->nextSiblingWidget();
}
ColorManager::instance()->eventScreenChanged();
}
updateScreen();
return true;
}
явно, что проблема тут - ColorManager::instance()->eventScreenChanged(); в методе instance происходит создание статического объекта от класса ColorManager и возврат указателя на него (не знаю, зачем так сделано, но что поделать). BlendingMapPtr это класс, который описан ВНУТРИ класса ColorManager. вобщем вроде все. есть какие нить соображения/пожелания/советы?
|
|
|
RE: ошибка линковки (linux, g++) - 2009-05-01 22:32:19.110000
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
блин, вот для чего нужны форумы)))))))))))))))))))))))) я не видел, что это конструктор))) как запостил этот пост, увидел, проверил, и оказывается, что он был описан как inline функция)))) всем спасибо, пост прикройте :)
|
|
|
|
|