WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Экспорт функций из dll : Borland искажает имена

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Экспорт функций из dll : Borland искажает имена
zAg35 опубликован 20-09-2001 19:35 MSK   Click Here to See the Profile for zAg35   Click Here to Email zAg35  
Перефразировал топик насчет dll. Проблема в следующем : допустим в некой dll-ке Pack.dll есть функция для экспорта
__declspec( dllexport ) void CreateTemp(char *pstr,void **PTemp);
При этом фрагмент секции экспорта для Pack.dll, полученный с помощью IMPDEF.exe выглядит так:
LIBRARY PACK.DLL

EXPORTS
@@Temp@Finalize @9 ; __linkproc__ Temp::Finalize
@@Temp@Initialize @8 ; __linkproc__ Temp::Initialize
@CreateTemp$qpcppv @7 ; CreateTemp(char *, void * *)

Как видим "CreateTemp" превратился в "@CreateTemp$qpcppv" а также автоматически присвоился номер 7.

Теперь для получения адреса CreateTemp после LoadLibrary приходится записывать так:

*(FARPROC*)&pfn = GetProcAddress(hPack, "@CreateTemp$qpcppv");

а хотелось использовать нормальное имя.Подскажите что делать.

Roman_M опубликован 21-09-2001 12:27 MSK     Click Here to See the Profile for Roman_M  Click Here to Email Roman_M     
Элементарно, Ватсон. (C)

extern "C" __declspec( dllexport ) void CreateTemp(char *pstr,void **PTemp);

zAg35 опубликован 21-09-2001 12:40 MSK     Click Here to See the Profile for zAg35  Click Here to Email zAg35     
2 Roman_M : Спасибо ! Пашет.
m_fox опубликован 21-09-2001 16:39 MSK     Click Here to See the Profile for m_fox  Click Here to Email m_fox     
2zAg35
В той статье так и написано...
zAg35 опубликован 21-09-2001 16:52 MSK     Click Here to See the Profile for zAg35  Click Here to Email zAg35     
m_fox ,извини - не обратил внимания на extern "C", но и у тебя там не было акцентировано внимание на этой особенности ,а так статья отличная !

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.