Как зарегистрировать .NET 5+ DLL для правильного регистрации Com и использовать его из Delphi Code?C#

Место общения программистов C#
Ответить
Anonymous
 Как зарегистрировать .NET 5+ DLL для правильного регистрации Com и использовать его из Delphi Code?

Сообщение Anonymous »

Я могу зарегистрировать DLL, выполненный .NET Framework 4.8 для реестра в качестве com и использовать его из Delphi Cod >

Код: Выделить всё

  [ComVisible(true)]
[Guid("21487353-6AE0-403B-AA8D-57AE9725C9DB")]
[ClassInterface(ClassInterfaceType.None)]
public class ClassA : IClassA
{

public string GetStr()
{
return "Message text";
}
}
< /code>
iclass: < /p>
  [ComVisible(true)]
[Guid("1A3C6B1D-9420-45A4-BCD4-E7E31762D035")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IClassA
{
string GetStr();

}
< /code>
Я создаю проект как x86 artichecture (.net framework 4.8.1), затем запустите Regasm Project.dll /codebase
.
Когда я проверяю регистрационные записи i видел, что класс был успешно зарегистрирован и имеет прогид ( classlib.classa < /strong>).

и я позвонил его из Delphi Code: < /p>

Код: Выделить всё

program Project1;
uses
ComObj,
SysUtils,
ActiveX;

var
COMObject: OleVariant;
ReturnValue: string;
begin
try
CoInitialize(nil);

COMObject := CreateOleObject('ClassLib.ClassA');
ReturnValue := COMObject.GetStr;

WriteLn('COM method called successfully.->'+ ReturnValue);

except
on E: Exception do
WriteLn('Error: ' + E.Message);
end;
CoUninitialize;
end.
< /code>
Здесь я получил «текст сообщения» от DLL. Проблемы нет, но я хочу сделать то же самое с .net8 Project Dll.

, поэтому я создал новый библиотечный проект класса .net8 с конфигурацией сборки x86 и добавил эти два свойства в Propertygroup в .csproj и Составлено < /p>
true
true

Инструмент Regasm не работает с DLL, скомпилированным .NET8 и пробовал инструмент Regsvr32, как указано здесь https://learn.microsoft.com/en-us/dotnet/core/ Native-Interop/Expose-Components to-Com#образец
Команда:

Код: Выделить всё

 regsvr32 .\ClassLib.comhost.dll
Операция завершена успешно, но она дает « нет такой интерфейсной ошибки», когда я вызову тот же код из кода Delphi.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -from-delp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»