Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
#1

undefined symbol: * in Unknown on line 0 - C++

23.07.2013, 00:34. Просмотров 614. Ответов 6
Метки нет (Все метки)

Вобщем написал некий модуль для php, он корректно скомпилировался но под линукс при запуске php пишет
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525+lfs/mylib.so' - /usr/lib/php5/20100525+lfs/mylib.so: undefined symbol: _ZNK4Data10strtolowerEPKc in Unknown on line 0
Если линковка прошла успешно, то что это за ошибка во время выполнения? Судя по всему ругается на мой метод Data::strtolower()
data.h
C++
1
2
3
4
5
6
7
class Data
{
 
public:
     // ...
     char *strtolower  ( const char * const ) const;
};
data.cpp
C++
1
2
3
4
5
6
7
8
9
inline char *Data::strtolower(const char *const str) const
{
   char c, *b = estrdup(str), *s = b;
   while(*s != '\0' && (c = *s))
   {
      *s++ = (c >= 0x41 && c <= 0x5a) ? c + 0x20 : c;
   }
   return b;
}
Подскажите почему так и как исправить? dll'ка под win7 работает прекрасно. Если нужно могу ещё Makefile скинуть, но если компиляция прошла успешно наверное он не нужен
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6513 / 4979 / 460
Регистрация: 14.02.2011
Сообщений: 16,488
23.07.2013, 00:44     undefined symbol: * in Unknown on line 0 #2
может тебе inline выбросить?
честно говоря я не могу себе представить как он функцию(код) будет подставлять из уже скомпилированого модуля
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
23.07.2013, 10:40  [ТС]     undefined symbol: * in Unknown on line 0 #3
ValeryS, это вариант, но ведь этот метод используется только внутри либы, да и + к тому там есть другие инлайн методы которые стоят раньше в коде и вызывабтся раньше но на них не ругается. Ну я позже попробую и отпишусь.
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
24.07.2013, 21:30  [ТС]     undefined symbol: * in Unknown on line 0 #4
нет, убрать inline не помогло. Есть ещё варианты?
ValeryS
Модератор
6513 / 4979 / 460
Регистрация: 14.02.2011
Сообщений: 16,488
24.07.2013, 21:37     undefined symbol: * in Unknown on line 0 #5
есть еще варианты с искажением имен
Цитата Сообщение от OrmaJever Посмотреть сообщение
_ZNK4Data10strtolowerEPKc
но это тонкая тема
каждый компилятор искажает имена по своему, и обычно в широкий доступ эта информация не поступает
открой свою библиотеку например в PEExplorer и посмотри в разделе экспорт как твоя функция стала называться
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
24.07.2013, 22:46  [ТС]     undefined symbol: * in Unknown on line 0 #6
PEExplorer не захотел открывать линуксовые либы. Я открыл в обычном редакторе и нашёл там функцию имено с таким названием. Кстате как я сказал выше действие происходит в дебиане, на винде нормально компилится и работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2013, 23:02     undefined symbol: * in Unknown on line 0
Еще ссылки по теме:

Undefined symbol C++
Выдает ошибку( undefined symbol display() in module, как исправить? C++
Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) C++
Ошибка E2451 Undefined symbol 'i' C++
Веб парсинг и ошибка Undefined symbol WinHttpClient C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6513 / 4979 / 460
Регистрация: 14.02.2011
Сообщений: 16,488
24.07.2013, 23:02     undefined symbol: * in Unknown on line 0 #7
Цитата Сообщение от OrmaJever Посмотреть сообщение
Кстате как я сказал выше действие происходит в дебиане, на винде нормально компилится и работает.
может тогда проблемы с линуксом
попробуй задать вопрос в той ветке
я честно говоря не очень силен в системе линуксов
попробуй на другом линуксе другая версия (например федору) сборка
тогда узнаешь проблема глобальная или локальная
Yandex
Объявления
24.07.2013, 23:02     undefined symbol: * in Unknown on line 0
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru