Вставить com obj в exe delphi

Я сделал dll на С # и сделал ее видимой, а затем использовал ее в delphi. Для этого мне пришлось зарегистрировать dll, чтобы я мог установить ее как компонент в моем delphi ide. (Я зарегистрировал dll с помощью функции взаимодействия, затем в delphi пошел установить компонент> библиотека типов> выбрал мою com dll и создал все для ее использования.)

Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу использовать exe на другом компьютере без необходимости регистрировать dll. Можно ли скомпилировать exe файл с зарегистрированными com dll?

У меня есть решение - не использовать com obj, а просто использовать неуправляемую dll и экспортировать все методы, которые я хочу, но я бы предпочел встраивать dll / com в свой exe, и я не могу найти решение для этого , я не знаю, возможно ли это.


person John    schedule 17.07.2018    source источник
comment
Iirc, вы можете использовать код в источнике TRegSvr.Exe (TRegSvr.Dpr) для регистрации .Dll из вашего собственного приложения.   -  person MartynA    schedule 17.07.2018
comment
Не делай этого так. Отправьте исполняемый файл и DLL и используйте COM без регистрации.   -  person David Heffernan    schedule 17.07.2018
comment
@DavidHeffernan Среда, с которой я работаю на своей пользовательской стороне, очень ограничена.   -  person John    schedule 18.07.2018
comment
Если вы используете COM, вам необходимо указать исполняемому файлу, как найти COM-сервер. Это означает либо регистрацию COM-сервера, либо использование COM-порта без регистрации. Если вы не хотите регистрировать COM-сервер, используйте COM без регистрации. Никакого волшебного решения не будет. Вам нужно будет узнать много нового. Это займет некоторое время. Не ждите, что вы решите эту проблему за часы.   -  person David Heffernan    schedule 18.07.2018
comment
@DavidHeffernan Я нашел эту stackoverflow.com/questions/5074563/registration-free -com-dll Просто, если вы это знаете, знаете, какой файл .X он использует в ответе вместо .dll?   -  person John    schedule 18.07.2018
comment
@ Джон, я не знаю. Сам я этого не делал.   -  person David Heffernan    schedule 18.07.2018


Ответы (1)


Используйте динамическую загрузку техники CLR для загрузки и использования DLL. обратитесь к этому Размещение среды выполнения .NET в программе Delphi вы можете получить свой ответ.

В методе динамической загрузки вам не нужно регистрировать DLL, вам просто нужно сгенерировать TLB и интерфейс для вашей DLL и с помощью этого использовать DLL.

person user2056904    schedule 18.07.2018
comment
Как сгенерированный tlb вызывает методы dll? ... Реестр дает путь к dll и то, что происходит в бэкэнде без него, только с tlb вы мало что можете сделать. И я понятия не имею, как использовать тот код, который вы отправляете мне по этой ссылке. - person John; 18.07.2018