Exportar funções C ++ dentro de um aplicativo C#
-
21-09-2019 - |
Pergunta
Saudações, lamento me incomodar, mostrarei a pergunta:
Estou tentando exportar algumas funções escritas em C ++ em uma DLL para importá -las em um aplicativo C# em execução no Visual Studio. Eu faço a exportação conforme relatado no código a seguir,
tobeexported.h:
namespace SOMENAMESPACE
{
class __declspec(dllexport) SOMECLASS
{
public:
SOMETYPE func(param A,char b[tot]);
};
}
tobeexported.cpp:
#include "stdafx.h"
#include "tobeexported.h"
...
using namespace SOMENAMESPACE;
SOMETYPE SOMECLASS:: func(param A,char b[tot])
{
...some stuff inside...
}
A DLL é criada e o código já está gerenciado por CLR (procurou com um software de desmontagem (refletor)) e contém as funções exportadas, então eu "adiciono a referência" no meu aplicativo C# e a DLL é encontrada, mas quando eu a abrir Com o navegador de objeto, ele está completamente vazio, nem classe nem objeto foi exportado e pronto para ser usado
Você pode me ajudar por favor? obrigado e cumprimentos
Solução
Que tal usar o gerenciado C ++ para compilar sua DLL? Então você só precisa adicionar um árbitro à aula como esta:
namespace SOMENAMESPACE
{
public ref class SOMECLASS
{
public:
SOMETYPE func(param A,char b[tot]);
};
}
Após compilação e referência bem -sucedidas no outro projeto, a classe deve ser visível. Exportar C ++ nativo não é realmente portátil, cada compilador produz resultados diferentes e é tedioso para se ligar de dentro de C#...
Editar: Modificador de acesso público adicionado à classe Ref ...