Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.11.17;
Скачать: CL | DM;

Вниз

.Net из VCL   Найти похожие ветки 

 
robt5   (2013-05-31 22:27) [0]

можно ли гипотетически, из обычного дельфокода использовать .Netовские классы и прочую лабуду?
через СОМобъекты например... ? или на крайняк dllшку написаную в .Net вызывать ?


 
Rouse_ ©   (2013-06-01 00:17) [1]

Конечно можно.


 
Пит   (2013-06-01 00:37) [2]

мне, кстати, тоже интересно.

Если отбросить .NET поддержку в дельфи (допустим, работаем в Delphi 7) - можно ли как-то использовать DLL, написанную в рамках .NET (так сказать сборку / assembly). Интересно, как это выглядит, если можно? )


 
Пит   (2013-06-01 00:38) [3]

а вообще COM немножко несовместим с .NET, поэтому есть специальная технология "переходник"... я её использовал, но что-то все забыл уже нафиг.
По-моему, смысл был в том, что делаешь .NET класс (я на VS.NET писал), а потом какая-то утилита делает прослойку для него, которую можно через COM использовать... блин... год прошел и всё забыл...


 
Rouse_ ©   (2013-06-01 00:43) [4]

Любой файл, выполненный в виде PE образа можно загрузить и использовать.
Язык разработки тут роль не играет, в отличие от требуемого окружения.


 
Пит   (2013-06-01 01:06) [5]

а .NET библиотеки они имеют PE структуру? Я вот не уверен... но да ладно.

Розыч, ты можешь привести код вызова .NET библиотеки (какой-нибудь её функции) из "нативного" дельфи кода?


 
Rouse_ ©   (2013-06-01 01:21) [6]


> Пит   (01.06.13 01:06) [5]
> а .NET библиотеки они имеют PE структуру?

Тут это... дело в том что загрузчик умеет работать только с PE файлами.


> Розыч, ты можешь привести код вызова .NET библиотеки (какой-
> нибудь её функции) из "нативного" дельфи кода?

эмм... LoadLibrary + GetProcAddr ну и сам вызов. Как-то так.


 
Пит   (2013-06-01 01:43) [7]

Розыч, ну ты опять в роли Капитана, ты тока не обижайся.

Вопросы на мой взгляд очевидные:

1) я вот объявил в VS 2010 под .NET функцию в классе (а как известно, объявлять функции вне класса нельзя): TMyClass.Func - какое имя она будет иметь в DLL?

2) поскольку объявления внутри _исключительно_ классов - нет ли каких то нюансов при вызове из "нативного" кода дельфи?!

3) что с типами данных? У .NET известно - автоматическая сборка мусора - не накладывает ли и это некие нюансы?


 
Rouse_ ©   (2013-06-01 01:53) [8]


> 1) я вот объявил в VS 2010 под .NET функцию в классе (а
> как известно, объявлять функции вне класса нельзя): TMyClass.
> Func - какое имя она будет иметь в DLL?

Ну допустим она называется "qwe".
Имя она будет иметь то - которое ты ей укажешь в секции экспорта.
Причем она должна быть реализована с учетом соглашений о вызовах.
Иначе она так и останется только тебе известной "qwe"


> 2) поскольку объявления внутри _исключительно_ классов -
>  нет ли каких то нюансов при вызове из "нативного" кода
> дельфи?!

нет никаких нативных классов и нюансов, есть библиотека со своими таблицами реаллока, импорта и экспорта.


> 3) что с типами данных? У .NET известно - автоматическая
> сборка мусора - не накладывает ли и это некие нюансы?

На внешний код?


 
Пит   (2013-06-01 02:04) [9]


> Имя она будет иметь то - которое ты ей укажешь в секции
> экспорта.

возможно начинаются смешиваться понятия платформы .NET и компилятора VS.NET, я не очень хорошо разбираюсь.

Но - насколько помню, если ты в сборке объявишь public класс и у него объявишь public метод, то он будет доступен из вызова вне, это такая логичная, понятная возможность.

А что делать, если метод static (классовый метод) - есть ли особенности вызова? Кстати, опять же соглашение - stdcall?

Ведь работает виртуальная машина по сути, вообще LoadLibrary загрузит ли .NET библиотеку в нужном состоянии?


 
Дмитрий С ©   (2013-06-01 02:08) [10]


> Ведь работает виртуальная машина по сути, вообще LoadLibrary
> загрузит ли .NET библиотеку в нужном состоянии?

Смею предположить, что .NET библиотека по организации схожа с организацией InProc COM объекта.


 
Германн ©   (2013-06-01 02:21) [11]


> Rouse_ ©   (01.06.13 00:43) [4]
>
> Любой файл, выполненный в виде PE образа можно загрузить
> и использовать.
> Язык разработки тут роль не играет, в отличие от требуемого
> окружения.
>

Используя хакерские способы.


 
Германн ©   (2013-06-01 02:29) [12]


> через СОМобъекты например

Через СОМ можно даже чёрта вызвать, но только если он заранее предусмотрел такую возможность. :)


 
знайка   (2013-06-01 02:30) [13]

http://jonxxx.me/Pages/Page/80


 
robt5   (2013-06-01 10:48) [14]

а если без написания дллшек?
вот стоит в системе дотнет 4.0 например, нужно вызвать метод некого класса, получить результат?
можно ли это сделать через яваскрипт который можно использовать в дельфи?


 
robt5   (2013-06-01 11:24) [15]

а собственно дотнет из дельфи перекочевал в дельфипризм в виде примочки для VS ???


 
icelex ©   (2013-06-01 11:51) [16]

ComVisible
DllExport


 
Пит   (2013-06-01 12:53) [17]

во, в статье знайки [13] уже кое-что. И фразы:

То есть экспортируемая функция должна быть public static и помечена атрибутом DllExport, как показано в коде.

это уже похоже на правду...



Страницы: 1 вся ветка

Текущий архив: 2013.11.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.007 c
15-1370005892
"Добрый Сок"
2013-05-31 17:11
2013.11.17
Расширение FF "Инструмент разработчика" для IE. Посоветуйте


15-1369773002
Юрий
2013-05-29 00:30
2013.11.17
С днем рождения ! 29 мая 2013 среда


2-1360419165
jjda
2013-02-09 18:12
2013.11.17
Блокировка записей Access многопользовательский режим


2-1360758456
шел мимо решил зайти
2013-02-13 16:27
2013.11.17
объявление переменной TMemo


15-1370076915
Пит
2013-06-01 12:55
2013.11.17
В чём сложность поддержки большого проекта?