0
In my project I am developing interoperability between C# and C++ in a single Library. In C++ my C++ functions and functions could bring to C# while C# methods could bring to C++, for example functions to string
.
//C++
void ConfigWindowMenu(bool minimizeB, bool maximinizeB, closeB){
//Controlar o menu da janela como desativar e ativar botões da janela do Windows
}
//C#
[DllImport("C++.dll")]
public static extern void ConfigWindowMenu(bool minimizeB, bool maximinizeB, closeB);
//Usar adiante
It would be an advantage to develop in both these languages, now comes the problem: It’s just that I want to bring methods and others from C# to C++, so I’m going to use COM.
namespace AdvancedStringC__
{
public interface IString
{
bool Contains(string item, string toFind);
}
public class StringCPlusPlus : IString
{
public bool Contains(string item, string toFind) => item.Contains(toFind);
}
}
Then, in Properties > Build > Marked 'Register for COM interoperability', then signed Assembly in Properties > Signatures > Mark 'Sign Assembly' and create password-free signature.
Even registered for COM interoperability must go to AssemblyInfo.cs
and edit visibility for COM.
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// As informações gerais sobre um assembly são controladas por
// conjunto de atributos. Altere estes valores de atributo para modificar as informações
// associada a um assembly.
[assembly: AssemblyTitle("AdvancedStringC++")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("AdvancedStringC++")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Definir ComVisible como false torna os tipos neste assembly invisíveis
// para componentes COM. Caso precise acessar um tipo neste assembly de
// COM, defina o atributo ComVisible como true nesse tipo.
[assembly: ComVisible(true)] //<------ aqui era false.
// O GUID a seguir será destinado à ID de typelib se este projeto for exposto para COM
[assembly: Guid("e9994c9f-a3ed-4f19-99c4-25fc26e7257a")]
// As informações da versão de um assembly consistem nos quatro valores a seguir:
//
// Versão Principal
// Versão Secundária
// Número da Versão
// Revisão
//
// É possível especificar todos os valores ou usar como padrão os Números de Build e da Revisão
// usando o '*' como mostrado abaixo:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
After compiling I get Dll, Pdb and tlb only I don’t know how to add this tlb in C++, I’m using the recent Visual Studio.