У меня есть клиент Delphi (exe) и .NET COM dll, который я пытаюсь запустить без необходимости регистрации DLL. Я выполнил шаги here, и мой клиент Delphi компилируется отлично. Тем не менее, я не эксперт Delphi, и я не могу понять, как использовать объект в Deplhi. Взяв пример Skype4COM.dll, связанный с ним, как мне получить доступ к dll и его методам из Delphi 7? Заранее спасибо.Delphi 7 - Регистрация бесплатной активации COM
ответ
Это не ответ, но я хочу включить образец кода, и это единственный способ узнать, как это происходит при переполнении стека.
В случае, если это может вам помочь, вот пример того, как мы включили ссылку на элемент управления MS Flex Grid в одном из наших проектов VB6, которые мы развернули в SxS. Клиентом является AbbottMST.exe, COM-сервер - MSTEngine.dll, и это вырезка из файла манифеста клиента, AbbottMST.exe.manifest.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="AbbottMST" version="4.0.0.7"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="MSTEngine" version="4.0.0.4"/>
</dependentAssembly>
</dependency>
<file name="msflxgrd.ocx">
<comClass clsid="{6262D3A0-531B-11CF-91F6-C2863C385E30}"
tlbid="{5E9E78A0-531B-11CF-91F6-C2863C385E30}"
progid="MSFlexGridLib.MSFlexGrid.1"
description="Microsoft FlexGrid Control, version 6.0 (SP6)"
/>
</file>
</assembly>
Обратите внимание, что если вы включите манифест, то вы должны развернуть его как бок о бок. Для этого проекта нам нужна была как нормальная зарегистрированная версия для Windows 2000, которая не поддерживает SxS, так и бок о бок для XP. Версия EXE с этим манифестом, связанным с ним, не будет работать в установке, отличной от SxS. (Может быть, есть какое-то волшебное заклинание, о котором мы не знаем, но это был наш опыт.)
Спасибо, Ciaran. Именно поэтому я понимаю вас, моя настройка такова: мой клиент Delphi7, назовем его ** TestStub.exe **, мой COM-сервер находится на C#; ** ReportFramework.dll **. Теперь ReportFramework.dll имеет кучу ссылок на Crystal Reporting через GAC. В комментариях выше вы говорите, что «клиентский манифест должен включать любые другие сборки, на которые вы зависите», поэтому мне нужно будет ссылаться на Crystal dll в моем ** TestStub.exe.manifest ** (например, вы сделали с msflxgrd. ocx) вместе с ReportFramework, если я захочу запустить их бок о бок? – user1365081
Нет, вам не нужно упоминать сборки Crystal Reports в манифесте, потому что они являются ссылками .NET (поскольку вы говорите, что ссылаетесь на них через GAC.) Вам нужно только включить COM-ссылки в файл манифеста. Я не на 100% уверен в этом, потому что я не пробовал, что вы делаете, но я достаточно уверен. Весь этот разговор о бок о бок был связан с COM, пытаясь подключить ваш клиент COM Delphi к первичной сборке COM-сборки сборки .NET. –
1) если у вас есть COM .dll, почему бы просто не попасть с программой и запустить «regsvr32 mydll.dll», ? 2) Если у вас действительно есть .Net .dll, как вы надеетесь запустить его из Delphi7 Win32 (неуправляемый) .exe? – paulsm4
В настоящее время мы регистрируем его программно через «regasm mydll.dll», но мы изучаем свободный доступ к регистрации. Почему бы мне не запустить его из Delphi 7? В MSDN вы найдете демо-версию, как это сделать через C++ и VB6. – user1365081
Не совсем уверен, какая у вас проблема. Является ли он (а), когда вы регистрируете DLL, ваш клиент может потреблять объекты в порядке, и вы хотите знать, как настроить бесплатную регистрацию, или (б) ваш клиент не может потреблять объекты вообще, даже если вы регистрируете DLL? –