Chame as funções de membro nativas / não gerenciadas do C ++ do C # quando as funções de membro não foram exportadas

Eu tenho uma DLL não gerenciada que exporta apenas um método de fábrica de estilo C que retorna uma nova instância de uma classe (simplificada aqui para parecer simples).

ola.h

#if defined(HWLIBRARY_EXPORT) // inside DLL
#   define HWAPI   __declspec(dllexport)
#else // outside DLL
#   define HWAPI   __declspec(dllimport)
#endif

struct HelloWorld{
   public:
    virtual void sayHello() = 0;
    virtual void release() = 0;
};
extern "C" HWAPI HelloWorld* GetHW();

hello.cpp

#include "hello.h"

struct HelloWorldImpl : HelloWorld
{
    void sayHello(){
    int triv;
    std::cout<<"Hello World!";
    std::cin>>triv;
};
void release(){
    this->HelloWorldImpl::~HelloWorldImpl();
};
HelloWorld* GetHW(){
HelloWorld* ptr = new HelloWorldImpl();
return ptr;
};

Agora, eu posso usar o dllimport para acessar GetHW (), mas existe uma maneira de acessar as funções de membro da 'estrutura' retornada ... ou seja, diga Olá e libere?

Eu também estava preso com o mesmo problema. Esta pergunta foi feita um tempo antes. Eu comentei para obter uma solução melhor, mas ainda não recebi resposta. Então, republicando.

Quando pesquisei no Google, consegui descobrir duas soluções.

Solução1: exponha todas as funções de membro no estilo C para a dll existente. O que eu não posso fazer, pois é uma dll de terceiros.

Solução2: escreva uma dll C ++ gerenciada expondo a funcionalidade da dll nativa do C ++, que posteriormente pode ser usada na sua dll do C #. Aqui muitas classes / funções estão presentes. Portanto, criar levaria a maior parte do tempo.

Eu tenho as soluções acima no link abaixo.Como fazer Marshall

Informe-me se existe alguma solução melhor além das duas soluções acima.

Eu tenho o código fonte da solução C ++. Mas o que eu pensei que era não tocar em C ++ dll. Se houver alguma possibilidade de fazê-lo em C #, seria ótimo.

Se não houver alternativa, eu preciso seguir qualquer uma das duas soluções especificadas.

questionAnswers(1)

yourAnswerToTheQuestion