Декорирование имён в статической библиотеке VC++
От: AleXor  
Дата: 27.03.06 08:49
Оценка:
Всем привет!

Проблема: Есть некая статическая библиотека lib (с исходниками), экспортирующяя классы. Библиотека собрана в VC++.NET 2003. Создаю приложение Windows Forms в той-же среде и подключаю библиотеку. Создаю класс из статической библиотеки. Могу использовать только некоторые методы созданного экземпляра класса. На остальные линковщик пишет "error LNK2001: unresolved external symbol". Расковырял lib — декорированное имя которое ищет линковщик не совпадает с тем которое в библиотеке . Чего можно предпринять? Может я чего не так делаю?
Re: Декорирование имён в статической библиотеке VC++
От: Аноним  
Дата: 27.03.06 09:41
Оценка:
Отменить декорацию или вызывать по номерам
art
Re[2]: Декорирование имён в статической библиотеке VC++
От: AleXor  
Дата: 27.03.06 10:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Отменить декорацию или вызывать по номерам

А>art

Если можно поподробнее. Разве в статической библиотеке присваиваются номера? Это ведь lib а не dll. Как можно отменить декорацию?
Re[3]: Декорирование имён в статической библиотеке VC++
От: Аноним  
Дата: 27.03.06 10:39
Оценка:
lib это описание экспортируемых функций библиотекой dll коода там никакого НЕТ
art
Re[4]: Декорирование имён в статической библиотеке VC++
От: AleXor  
Дата: 27.03.06 10:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>lib это описание экспортируемых функций библиотекой dll коода там никакого НЕТ

А>art





Цитирую (источник — http://www.progz.ru/articles.php?view=62)

Как Вы можете заметить, существуют также приложения типа "Win32 Static Library". При компиляции проектов данного типа создаются статические (в отличие от динамических!) библиотеки — имеющие расширение *.lib. Отличие статических библиотек от динамических состоит в том, что при компиляции код, заключенный в lib-файл (а там располагается именно код!), помещается целиком и полностью в бинарный файл использующего его приложения. При компиляции проекта "Win32 Dynamic-Link Library" у Вас также создается lib-файл. Но он содержит лишь необходимую информацию для связывания адресов DLL-файла и Вашего приложения.
Re[5]: Декорирование имён в статической библиотеке VC++
От: Аноним  
Дата: 27.03.06 12:32
Оценка:
Приатачь мне пожалуйста солюшен сделанный на С++ (2003 — 2005)где генеритьсяя библиотека lib о которой ты говоришь (с кодом внутри), а то я до сегодняшнего дня видимо неравильно кое-чего представлял
Буду очень признаиелен, я действительно не знал!!!

ЗЫ и с коментариями код какой нибудь постой вроде ХЕЛЛО ВОРД
Re[6]: Декорирование имён в статической библиотеке VC++
От: AleXor  
Дата: 27.03.06 14:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Приатачь мне пожалуйста солюшен сделанный на С++ (2003 — 2005)где генеритьсяя библиотека lib о которой ты говоришь (с кодом внутри), а то я до сегодняшнего дня видимо неравильно кое-чего представлял

А>Буду очень признаиелен, я действительно не знал!!!

А>ЗЫ и с коментариями код какой нибудь постой вроде ХЕЛЛО ВОРД


Могу выслать на маил. Пример 4 мега — сюда не влезает.
Re[7]: Декорирование имён в статической библиотеке VC++
От: Аноним  
Дата: 28.03.06 06:48
Оценка:
Artur.Karmanovski@billimg.ru

Только сожми пожалуйста зипом
Re[8]: Декорирование имён в статической библиотеке VC++
От: AleXor  
Дата: 28.03.06 07:16
Оценка:
Адрес правильный? Не посылается.

Artur.Karmanovski@billimg.ru
Re: Декорирование имён в статической библиотеке VC++
От: AleXor  
Дата: 28.03.06 07:52
Оценка:
Вот декорированное имя из статической библиотеки:
?OpenConnection@CRemoteModbus@@QAEHV?$CStringT@DV?$StrTraitMFC@DV?ChTraitsCRT@D@ATL@@@@@ATL@@GK@Z

Это ищет линковщик программы:
?OpenConnection@CRemoteModbus@@$$FQAEHV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@GK@Z

И чего я совсем не понимаю — undname для обоих декорированных имён выдаёт одинаковое нормальное имя:
public: int __thiscall CRemoteModbus::OpenConnection(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,unsigned short,unsigned long)

То есть символы $$F, которые есть в одном и нету в другом, ни чего не значат?
Re[9]: Декорирование имён в статической библиотеке VC++
От: Аноним  
Дата: 28.03.06 12:35
Оценка:
в billimg.ru не правильно буква m

Artur.Karmanovski@billing.ru <- OK

И ещё на всяк случай artkarma@rambler.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.