Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

728
Visualizações
¿Cómo llamo a una DLL de .NET Core 6.0 en Delphi?

Situación inicial

Utilicé C omponent O bject M odel (COM) en .NET Framework antes para usar mi biblioteca de clases C# en Delphi como se muestra en este tutorial de YouTube , que funcionó sorprendentemente bien. Sin embargo, ahora quiero usar .NET Core 6 en su lugar.

Siguiendo el tutorial oficial de Microsoft "Exponer los componentes de .NET Core a COM" , creé esta interfaz

 using System.Runtime.InteropServices; [ComVisible(true)] [Guid(6775d93d-cf14-42b9-83db-425bac0acf4d)] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IServer { public string getHelloWorld(); }

y esta clase.

 using System.Runtime.InteropServices; [ComVisible(true)] [Guid(d62bf794-d29e-4fcd-8637-994490264a93)] public class Server : IServer { public string getHelloWorld() { return "Hello World"; } }

Después de compilar el proyecto, ejecuté este comando para registrar todos mis objetos .NET expuestos con COM.

 regsvr32 MyProjectName.comhost.dll

El comando se ejecutó con éxito. Ahora traté de importar el archivo .dll creado en Delphi, como lo hice antes con las bibliotecas de clases escritas en .NET Framework (consulte la marca de tiempo del tutorial de YouTube ). Sin embargo, Delphi se encuentra con un error porque no puede cargar la biblioteca de tipos.


Edición 1: cambio de ruptura tipo Godzilla

Según la documentación oficial ...

A diferencia de .NET Framework, .NET Core o .NET 5+ no admiten la generación de una biblioteca de tipos COM (TLB) a partir de un ensamblado .NET. La guía es escribir manualmente un archivo IDL o un encabezado C/C++ para las declaraciones nativas de las interfaces COM. Si decide escribir un archivo IDL, puede compilarlo con el compilador MIDL de Visual C++ SDK para producir un TLB.

... no hay soporte en .NET Core para generar una librería de tipos.


Edición 2: compilador MIDL

Sin embargo, todavía hay una forma de producir manualmente un archivo TBL usando el compilador MIDL. Como puede leer en la documentación oficial , el compilador MIDL procesa un archivo IDL para generar una biblioteca de tipos. Dicho esto, creé este archivo IDL usando esta guía .

 [ uuid(a93d03e0-9adf-4a2d-93e3-0ccfc2d8e1a6), lcid(0x0409), version(1.0), ] library MyProjectName { importlib("stdole.tlb"); [ uuid(16292ce5-ccd1-405d-9a70-ace42152bb15), oleautomation, dual ] interface IServer: IUnknown { HRESULT getHelloWorld([out, string] IServer** string); }; };

Sin embargo, aparece un error cuando ejecuto el siguiente comando para generar el archivo .tlb .

 midl myProjectName.idl /tlb myProjectName.tlb > midl : command line error MIDL1005 : cannot find C preprocessor cl.exe

Problema: busqué cl.exe en mi computadora pero no pude encontrar nada.

P.: ¿Alguien tiene alguna idea de cómo podría solucionar mi problema? Agradezco mucho cualquier tipo de ayuda, saludos!

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si no le importa cambiar a un enfoque diferente, puede compilar una biblioteca nativa desde .Net usando NativeAOT. Puedes encontrar un ejemplo aquí

Parece que está planeado que esté disponible en .Net 7 pero ya puedes empezar a usarlo con .Net 6.

over 4 years ago · Santiago Trujillo Relatório

0

¿No sería más fácil crear una API usando MVC y llamarla desde la aplicación Delphi? De esa manera puede evitar todos los problemas con las DLL.

over 4 years ago · Santiago Trujillo Relatório

0

Tal vez esta herramienta te ayude:
https://github.com/dspace-group/dscom

 C:\> dotnet tool install dscom -g C:\> dscom tlbexport myassembly.dll
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda