Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему меняются имена функций в библиотеке? 
:(
    Опции темы
mantissa
Дата 20.5.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 23.10.2007

Репутация: нет
Всего: 1



Привет великий All!

поскажите плиз, может кто сталкивался...

код на С++ с использованием потоков, векторов и строк компилю в lib*****.a 
    g++ -fPIC -c ./../*.cpp -I$(Ph_PlatHdr)
    g++ -shared -o $(NmLibSoMT102) *.o  -lstdc++                             

или компилю и линкую в lib*****.so
    g++ -c ./../*.cpp -I$(Ph_PlatHdr)
    ar -r $(NmLibMT102) *.o

моя функция
int TreatMes_R(void *p1, void *p2)
{...}
прекрасно компилиться, но превращается в 
...
00000000001070c0 D pArField_MT102_01                              
00000000001070e0 D pArField_MT102_02                              
0000000000107100 D pArField_MT102_03                              
0000000000107120 D pArField_MT102_1N                              
                 U printf@@GLIBC_2.2.5                            
                 U qListSubFun                                    
                 U stdout@@GLIBC_2.2.5                            
                 U strlen@@GLIBC_2.2.5                            
                 U strncmp@@GLIBC_2.2.5                           
                 U strstr@@GLIBC_2.2.5                            
0000000000005922 t __tcf_0                                        
000000000000593c t __tcf_1                                        
                 U _Unwind_Resume@@GCC_3.0                        
00000000001080a0 B vData                                          
0000000000003ea0 T _Z10TreatMes_RPvS_                                       <<<-------- вот во что она превратилась!
0000000000004fb6 T _Z13CompareFieldsPcPvRS_Ri                     
0000000000005338 T _Z14TreatMT102F72APc                                         
00000000000049e4 T _Z18After_Block4_MT102PvP11MT102_All_q         
0000000000005870 t _Z41__static_initialization_and_destruction_0ii
00000000000055b8 T _Z6SeeMemPvm                                   
00000000000052c8 T _Z9ClearDataP11DescField_t                     
000000000000675e W _ZdlPvS_                                       
0000000000005e52 W _ZN9CData2SQLaSERKS_    
...

компиляция проекта не идет... линковщик не м. найти      TreatMes_R
но если в проекте подменить имя на   '_Z10TreatMes_RPvS_ ' то все прекрасно работает..

но это ведь называется сделать через ж@#у??
пока близиться 1-е тестирование брошу так smile но хотелось бы потом исправить на "по-человечески"... 
а то мои последователи на меня матом потом ругаться будут... пытаясь разобраться в этой чертовщине...

с ув. BSD

Добавлено через 2 минуты и 7 секунд

кстати... если  код просто Си-шный никаких проблем и подмен имен не происходит
PM MAIL   Вверх
MAKCim
Дата 20.5.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



компилятор С++ преобразует имена согласно сигнатуре и возвращаемому значению по определенному алгоритму (для обеспечения возможности перегрузки функций и т. д)
если хочешь использовать некоторые функции библиотеки, написанной на С++, в проекте на С, пометь их через extern "C"
Код

extern "C" int TreatMes_R(void *p1, void *p2)
{...}



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.