Hello Народ!
Не подскажите как сделать экспорт из своей библиотеки на на другой безымянный из другой библиотеки.
Поясню, а то как-то получилось не очень:
Это ссылки на ИМЕНОВАННУЮ ф-цию из другой библиотеки.В последствии, если прогнать полученную ExpFuncs через dumpbin:
dumpbin ExpFuncs /exports
получим :
ordinal hint RVA name
1 0 NamedFunction_Ord1 (forwarded to kernel32.AddAtomA)
2 [NONAME] (forwarded to kernel32.AddAtomA)
А я хочу, чтобы получилось:
ordinal hint RVA name
1 0 NamedFunction_Ord1 (forwarded to kernel32.[NONAME] 1)
2 [NONAME] (forwarded to kernel32.[NONAME] 1)
Заранее спасибо, Илья
ЗЫ: пишем в VC 6.0
11.03.03 11:18: Перенесено модератором из 'C/C++' — ПК
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Строка переназначения экпорта имеет формат вида “NTDLL.RtlDeleteCriticalSection”, т.е. начинается с названия модуля, к которому передаются обращения к символу (расширение имени модуля не указывается, оно обязательно должно быть .DLL), за которым после символа точки следует имя символа, под которым этот модуль его экспортирует. Вместо имени можно указать номер в виде “#n”, например: “NTDLL.#491” (номер указывается в десятичной системе счисления).
То есть если через DEF-файл, должно быть
EXPORT
MyFunc=kernel32.#1
только почему-то у меня не работает. Руки кривые?
А вот если в сырце будет
Спасибо, вроде работает под Win2K (потом попробую и под Win9x. По идее должна)
Извините за нескромность, но откель такая инфо?
Я пробовал с @1, но ничего не получается!
Заранее гороменное СПАСИБО.
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Здравствуйте, Slicer [Wirkwood],
Вы не могли бы разрешить еще одну, я надеюсь, последнюю проблемс:
Я видел, что некоторые линковщики могут экспортировать даже такие имена как
char* AnyKrutoiExportFun(char*, int)
Если смогете, то разъясните, как такой изврат сочинить на VC++ 60?
А также как вставить в экспортируемые имена такие символы как кавычки или знак равенства ?
Заранее спасибо, с жадным вопросом в глазах и сильно отвисшей челюстью, Вопрошающий
ЗЫ: такой изврат действительно существует, поверьте.
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)
Ну, прежде всего, возможно, Вам просто просмотрщик выдал экспорты в таком виде, а на самом деле там что-то
вроде 'AnyKrutoiExportFun$qqcp$rqcp', что он расшифровал в читабельном виде. TDUMP особенно этим грешит, когда
bpl-файлы дампаешь.
Но если и правда там именно такая строка...
Во-первых, прагма, которую я привел, не помогает?
Во-вторых, пожно поставить вместо вожделенных специмволов что-то иное, а потом руками, своей собственной прогой
или любым хекс-редактором заменить это что-то на то, чего просит душа.
Но в последнем случае прежде стоит подумать, чем это можно будет потом импортировать. Если придется отказаться
от неявного связывания, и мучить GetProcAddress — это, по-моему, слишком большая цена за такую крутизну
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
К сожалению это не изврат диасемблера или подобного ПО. Если мне не изменяет память такие штуковины я видел в DLL, содержащие в себе ссылку на Watcom. К сожалению вовремя не поимел данного вижуального комплектика, а хотя очень бы хотелось посмотреть. Много чего хорошего слышал про этих ребят.Честно говоря прирос к VC и даже если теперь бы мне где-нибудь и встретился он, то не знаю пересел бы на него ради данной проблемы?... А то как-то свежи в памяти Borland C++ ... Но это уже лирика.
За прагму спасибо, пошло
... Мы не привыкли отступать! И расколоть его поможет киножурнал "Хочу Все Знать"! ;)