информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медЗа кого нас держат?Портрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[c++] нужна компоновка по ординалам!!! как это сделать? 19.03.03 14:38  Число просмотров: 1101
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Мне нужно не то.
Нужно чтобы компоновщик слинковал мою прогу с моей DLL по ординалам, а не по имени. Ведь в LIB файле есть и то, и другое и компоновщику один пень как связать... Слышал про опцию, которая по дефолту отключена, но если включить ее, то линкер будет делать именно так....
Вот и вопрос: как это сделать и что за опция?

Спасибо
<programming>
[C++] Как импортировать по ординалу, а не имени? 18.03.03 22:59  
Автор: BXS Статус: Незарегистрированный пользователь
Отредактировано 19.03.03 14:00  Количество правок: 1
<"чистая" ссылка>
VC++. Мне нужно импортировать функции из одной моей DLL по ординалу, а не по имени. Как этого добиться?
И как сказать об этом линковщику? Об этом почему-то нигде не пишут (((

спасибо
[C++] Как импортировать функции по ординалу? 19.03.03 14:01  
Автор: CZ Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> VC++. Хочу импортировать функции по ординалу, а не по
> имени.
> Как это сделать?
>
> спасибо

func=GetProcAddress(hModule,(LPCSTR)Ordinal)
[c++] нужна компоновка по ординалам!!! как это сделать? 19.03.03 14:38  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Мне нужно не то.
Нужно чтобы компоновщик слинковал мою прогу с моей DLL по ординалам, а не по имени. Ведь в LIB файле есть и то, и другое и компоновщику один пень как связать... Слышал про опцию, которая по дефолту отключена, но если включить ее, то линкер будет делать именно так....
Вот и вопрос: как это сделать и что за опция?

Спасибо
[C++] Тебе нужен не линкер, а либрариан (библиотекарь блин :-))) ) 19.03.03 17:53  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Мне нужно не то.
> Нужно чтобы компоновщик слинковал мою прогу с моей DLL по
> ординалам, а не по имени. Ведь в LIB файле есть и то, и
> другое и компоновщику один пень как связать... Слышал про
> опцию, которая по дефолту отключена, но если включить ее,
> то линкер будет делать именно так....
> Вот и вопрос: как это сделать и что за опция?
Если длл-ка твоя, то в def включить строку:

Файл mydll.def
LIBRARY MYDLL
EXPORTS
MyOrdinalFunc @123
My2ndOrdinalFunc @234

---

После этого собрать либу для этого def-а
lib /def:mydll.def /out:mydll.lib

Далее, все модули собранные с этой либой будут импортить MyOrdinalFunc из mydll.dll по ординалу 123.

Причем lib можно собирать даже без самой dll-ки, то есть иметь для одной и той же dll-ки несколько def-ов, а в проект для нее включить только одну (например, где все экпорты по имени). Это кстати имеет значение еще и в случае если dll-ка не твоя. Чтоб избежать пересечения имен со стандартными либами можно сделать так:

LIBRARY KERNEL32
EXPORTS
OrdinalGetLastError @282

---

Если получить либу из этого def-а, то проимпортировать GetLastError можно будет и из стандартной kernel32.lib (по имени) и из этой новой либы, но с новым именем по ординалу. Хотя я бы не советовал этого делать - мало ли что случится с ординалами в следующем SP.

Вообще в MSDN-е довольно полная дока по def-ам - если еще чего надо ищи там.

> Спасибо
[C++] ошибка: unresolved external symbol 19.03.03 18:20  
Автор: BXS Статус: Незарегистрированный пользователь
Отредактировано 19.03.03 20:48  Количество правок: 1
<"чистая" ссылка>
сгенерил lib файл, короче все сделал описанным выше способом...
но вот ошибка: unresolved external symbol.

библиотека как была раньше, так и осталась включенной в проект.... но вот только теперь она не компилится ((
п-о-ч-е-м-у???
[C++] ошибка: unresolved external symbol 20.03.03 13:12  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Если функция STDCALL, то в .DEF-файле нужно писать "искаженное" имя:

LIBRARY KERNEL32
EXPORTS
GetLastError@0 @282
[C++] Да и еще 20.03.03 17:50  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Если функция STDCALL, то в .DEF-файле нужно писать
> "искаженное" имя:
>
> LIBRARY KERNEL32
> EXPORTS
> GetLastError@0 @282
@0 после GetLastError - это количество байтов, передаваемых в качестве параметров. Лучше всего смотри какое имя вписать как раз в том сообщении линкера - он не обманет. И пиши в def такое имя.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach