Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заставить exe на Delphi грузить dll на c++ [D7, WinXP]


X-Man ©   (2006-03-01 21:00:00) 

Собственно, как не крутил — так и не разобрался. Искал в инете — нашел много пространных рассуждений и примеры обратного преобразования (dll на c и exe на delphi). Может ли кто-нить привести маленький примерчик, чтоб он просто функцию булевскую с одним параметром передавал/принимал. Буду очень благодарен.
P.S. Грузиться должно динамически.


X-Man   (2006-03-01 22:18:00) [1]

о! Я бы сам не допер до ТАКОГО. благодарю покорнейше.
Подлый си. Использовав TDUMP увидел в какую кашу превращаются имена функций, если не использовать extern "C". В итоге получилось так:

extern "C" __declspec(dllexport) int _cdecl SomeFunc(bool b)
{
if (b) return 42; else return 24;
}


Desdechado   (2006-03-01 21:31:00) [2]

> пыхтел над этим
ну, и где результаты?
примерчик чего - длл на цпп? или использования в пасе?
loadlibrary + F1 + See also


Anatoly Podgoretsky   (2006-03-01 21:29:00) [3]

ДЛЛ не пахнет языком, вызывать можно из любого, писать на любом, лишь бы выполнялось соглашение об вызовае и поддерживались типы. Послностью совместимо только на СИ и на Фортране.


DrPass   (2006-03-01 21:19:00) [4]


> помнить, что С корежит имена функций при компиляции

С++

> Впрочем что значит "корежит"?

Дописывает к ним всякую хрень вроде $oob&. Таким мудрым способом там реализован механизм перегрузки функций. Дабы этого не было, объявляй экспортируемые функции как extern "C"


X-Man   (2006-03-01 21:14:00) [5]

Да вот это-то я знаю... Впрочем что значит "корежит"? :o
Можно все-таки примерчик, а? Я уже седня пару часов пыхтел над этим


Desdechado   (2006-03-01 21:06:00) [6]

все просто:
1. не использовать сложных типов данных (массивы, строки, классы)
2. соблюдать соглашения о вызовах (stdcall, cdecl или другое)
3. помнить, что С корежит имена функций при компиляции


Наверх

Титульная страница Поиск, карта сайта Написать письмо