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

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

Восстановить пароль Регистрация
 
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
23.07.2013, 00:34     undefined symbol: * in Unknown on line 0 #1
Вобщем написал некий модуль для 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 скинуть, но если компиляция прошла успешно наверное он не нужен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 00:34     undefined symbol: * in Unknown on line 0
Посмотрите здесь:

Linker Error: Undefined symbol _getimage in module C++
C++ Linker Error: Undefined symbol istream..
C++ Undefined symbol немогу запустить программу
Linker Error: undefined symbol C++
C++ [C++ Error] Unit1.cpp(29): E2451 Undefined symbol 'result'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
23.07.2013, 00:44     undefined symbol: * in Unknown on line 0 #2
может тебе inline выбросить?
честно говоря я не могу себе представить как он функцию(код) будет подставлять из уже скомпилированого модуля
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
23.07.2013, 10:40  [ТС]     undefined symbol: * in Unknown on line 0 #3
ValeryS, это вариант, но ведь этот метод используется только внутри либы, да и + к тому там есть другие инлайн методы которые стоят раньше в коде и вызывабтся раньше но на них не ругается. Ну я позже попробую и отпишусь.
OrmaJever
 Аватар для OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
24.07.2013, 21:30  [ТС]     undefined symbol: * in Unknown on line 0 #4
нет, убрать inline не помогло. Есть ещё варианты?
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
24.07.2013, 21:37     undefined symbol: * in Unknown on line 0 #5
есть еще варианты с искажением имен
Цитата Сообщение от OrmaJever Посмотреть сообщение
_ZNK4Data10strtolowerEPKc
но это тонкая тема
каждый компилятор искажает имена по своему, и обычно в широкий доступ эта информация не поступает
открой свою библиотеку например в PEExplorer и посмотри в разделе экспорт как твоя функция стала называться
OrmaJever
 Аватар для 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
Еще ссылки по теме:

C++ Очередь (undefined symbol)
Undefined symbol C++
Выдает ошибку( undefined symbol display() in module, как исправить? C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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
Ответ Создать тему
Опции темы

Текущее время: 13:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru