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 # ??

Foi útil?

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.

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