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

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top