Я написал библиотеку на C#. И хочу её подключить в свой проект Delphi. Как подключить библиотеку в Delphi?
--
Ранее я уже подключал библиотеки, но почитав мануалы по подключению в Delphi, я понял что лучше спросить это тут.
Обычно, библиотеки подключаются одной строкой кода (JS) или в два клика (C#), но в Delphi пишут про какие то процедуры, экспорт функций...
В моей библиотеке на C# классы и методы. Нет процедур.
Да и вся прелесть использования библиотеки в том, что подключил её и вызывай весь её функционал, а не переписывай или адаптируй её к приложению. По крайней мере так сделано на многих языках.
Да. Пока нет экспорта в COM, не будет никаких обычно.
Чтоб из C# в JS одной строкой подключалось, таких чудес не видел. И вообще, это крайне редко, чтоб что-то могло взять и само вместе заработать. Никто этим не занимается, никому это не интересно, всем интересно сделать привязку к поставщику.
Евгений Иванов, раз ты подключаешь библиотеки шарпа к шарпу в два клика, и библиотеки js к js в два клика, то какая претензия к делфи, если ты пытаешь "подключить" либу шарпа к делфи?
1. Процедуры - это и есть методы. Методы - это функции и процедуры.
2. Не надо путать библиотеки конкретных языков и динамические библиотеки в ос. Библиотеки для js конечно в js подключатся одной строкой. Как и библиотеки для шарпа в шарпе подключатся одной строкой, но вот библиотеки из шарпа никогда не подключатся в js. Библиотека - это набор кода на конкретном языке. Как ты код на шарпе подключишь одной строкой в js?
3. Если речь о DLL-библиотеках, то JS тут вообще ни каким боком. Он такие ни когда не переварит. Такие библиотеки в делфи подключаются либо через интерфейсы, либо через ком.
1. Процедуры - это и есть методы. Методы - это функции и процедуры.
Нет, это не так. Не надо смешивать функциональное и объектно ориентированное программирование.
Функции и процедуры не хранят состояние объекта. Классы и методы - хранят.
Экземпляры класса, статические классы (в которых могут быть только статические члены, методы например) и т.д.
И далее есть замещенные, виртуальные, переопределенные, частичные методы.
Абстрактные методы определенные в абстрактных классах/интерфейсах, а реализованные в конкретных.
И далее вся мощь ООП Наследование интерфейса от интерфейса с одинаковыми членами (в данном случае методами) и объединенной реализации этих членов, апкасты, даункасты...и прочее.
Hemul GM, "Ме́тод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту." - я считаю, что это не так.
Ужасное определение. Всё в кучу и класс и объект. Надеюсь, это исправят.
Статья из 20 предложений?
Такое разделение интерфейсов позволяет сохранять неизменным открытый интерфейс, но изменять внутреннюю реализацию.
Что курил автор? Какие интерфейсы? Это модификаторы доступа!
Интерфейс - это конструкция используемая для специфицирования услуг, предоставляемых классом или компонентом.
состояние объекта хранят свойства
Напоминаю - свойства, геттеры и сеттеры в просторечии, нужны для доступа к полям.
Интересно то, что свойства и есть методы, специальные методы для доступа к полям (нет рефлектор в помощь). Конкретно эти методы, по своему назначению, не хранят состояние объекта. Так уж было задумано в .NET.
Состояние экземпляра класса, в просторечии объекта (хотя и это некорректное определение, ведь объект размещается на куче вместе с экземпляром - но программисты любят называть эту пару объект) могут хранить классы (их экземпляры), статические классы и методы, например в переменных.
Что курил автор? Какие интерфейсы? Это модификаторы доступа!
Слово интерфейс в данном случае обозначает то, что доступно наследуемым классам или при использовании экземпляра этого класса.
Нечего брюзжать со слюной не разобравшись в том, чего не понимаешь.
"Модификаторы" и позволяют выстроить "интерфейс". Не надо путать, данном случае, "интерфейс класса" и "интерфейс" как абстрактную конструкцию. (учитывай контекст умник).
Методы - это действия над данными объекта. Те же геттеры и сеттеры - тоже методы.
И вообще. ЭТО НЕ ШАРП.
ЭТО Delphi.
Здесь есть отличия между процедурами и функциями. Функции и процедуры в объекте - это методы.
В Delphi могут быть свойства без геттеров и сеттеров.
Госпаде, я спорю с человеком, который не отличает библиотеки языка и разделяемые библиотеки WIndows... зачем....
Как правильно написал Александр Ананьев выше, ваш единственный путь - это использование COM. У меня был опыт подключения .Net к Delphi. Вам нужно в вашей библиотеке пометить классы/интерфейсы, которые хотите экспортировать/использовать в Delphi, аттрибутом ComVisible. Потом из "скомпиленной" либы .net нужно сгенерить файл tlb. Обращайте внимание на битность (x86/x64) вашей либы, тулзы для генерации tlb, и вашей программы на Delphi. Далее из tlb файла можно сгенерить утилитами Delphi модуль pas для подключения в проект.
Не единственный, но наиболее прямой. Жаль, сейчас навыки интеропа утрачены. А так-то раньше было: модуль на тасме (Турбо Ассемблер), модуль на Паскале, модуль на Си. И писали привязки. Измельчал народ