Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.11.17;
Скачать: [xml.tar.bz2];

Вниз

.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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
15-1369830310
Пит
2013-05-29 16:25
2013.11.17
Каким образом создается COM-сервер?


2-1360695387
jjda
2013-02-12 22:56
2013.11.17
LockType для обращения через ADO к Access


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


15-1370160003
Ихорь
2013-06-02 12:00
2013.11.17
А вот мог AGP-слот "подгореть"?


11-1207571875
Artlav
2008-04-07 16:37
2013.11.17
TKOLWebBrowser и OnBeforeNavigate2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский