Expor métodos Borland C ++ para C #
-
06-07-2019 - |
Pergunta
Eu método no código meu Borland C ++ seguinte,
static bool UploadBitstream(void)
{
//Some code Implementation
}
E eu estou tentando convertê-lo para DLL e acessá-lo em C #.
Quais são os passos que precisa seguir Para converter o DLL código e, em seguida, usá-lo em C # ??
Solução
Primeiro, você tem que ter certeza que os métodos são definidos externa. Então você precisa declarar a stdcall método ou convenção Pascal, e marcá-los dllexport. Ver listagem de código abaixo (esta é a memória antiga para mim, então perdão se estou um pouco fora de moderno Borland C ++ compiladores).
// code.h
extern "C" {
#define FUNCTION __declspec(dllexport)
FUNCTION int __stdcall SomeFunction(int Value);
No principal
#include "code.h"
FUNCTION int __stdcall SomeFunction(int timesThree)
{
return timesThree * 3;
}
Outras dicas
Uma vez que você compilou seu DLL tudo o que você precisa fazer em .NET para obter acesso a ele é usar a propriedade DLLImport.
public class stuff
{
[DLLImport("somedll.dll")]
public static extern void UploadBitstream();
}
Se precisar de ponteiros ou qualquer coisa assim ele fica mais complicado, mas para as funções de vazio é tão simples.
Note-se que uma vez que você chamar essa função a DLL será carregado pelo seu programa e não será liberado até que o seu programa é fechado. Você pode dinamicamente carregar DLLs, mas que é muito mais complicado. Eu posso explicar isso aqui se você tem uma necessidade.
Watch sua terminologia.
No seu exemplo UploadBitstream é função não um método.
Se ele é realmente um método em uma classe, então é muito difícil de usar classes de DLLs Borland compilados.
Se o código é realmente C não C ++, você deve ser capaz de criar uma DLL compatível para as suas funções simples de estilo C com C ++ Builder.
Veja a seguinte pergunta SO: Use uma dll de um programa c ++. (Borland C ++ construtor e em geral) onde eu listar várias configurações do compilador que também se aplicam a criação de DLLs compatíveis.