Предоставить методы Borland C ++ для C # - PullRequest
0 голосов
/ 06 мая 2009

У меня есть следующий метод в моем коде Borland C ++,

static bool UploadBitstream(void)
{
   //Some code Implementation
}

И я пытаюсь преобразовать его в DLL и получить доступ к нему в C #.

Какие шаги мне нужно выполнить , чтобы преобразовать код DLL а затем использовать его в C # ??

Ответы [ 3 ]

1 голос
/ 06 мая 2009

Во-первых, вы должны убедиться, что методы определены extern. Затем вам нужно объявить метод stdcall или соглашение о вызовах pascal и пометить их как dllexport. См. Листинг кода ниже (для меня это древняя память, так что извините, если я немного забочусь о современных компиляторах Borland C ++).

// code.h
extern "C" {

#define FUNCTION __declspec(dllexport)

FUNCTION int __stdcall   SomeFunction(int Value);    

В основном

#include "code.h"

FUNCTION int __stdcall SomeFunction(int timesThree)
{
    return timesThree * 3;
}
0 голосов
/ 07 мая 2009

Следите за своей терминологией.
В вашем примере UploadBitstream - это функция, а не метод.
Если это действительно метод в классе, то очень трудно использовать классы из скомпилированных библиотек Borland.

Если ваш код на самом деле C, а не C ++, вы сможете создать совместимую DLL для ваших простых функций в стиле C с помощью C ++ Builder.

См. Следующий вопрос: Используйте dll из программы на c ++. (Borland C ++ Builder и вообще) где я перечисляю различные параметры компилятора, которые также применяются для создания совместимых DLL.

0 голосов
/ 06 мая 2009

После того как вы скомпилировали свою DLL, все, что вам нужно сделать в .NET, чтобы получить к ней доступ, это использовать свойство DLLImport.

public class stuff
{
    [DLLImport("somedll.dll")]
    public static extern void UploadBitstream();
}

Если вам нужны указатели или что-то в этом роде, это усложняется, но для пустых функций это так просто.

Следует отметить, что как только вы вызовете эту функцию, dll будет загружена вашей программой и не будет освобождена, пока ваша программа не будет закрыта. Вы можете динамически загружать dll, но это намного сложнее. Я могу объяснить это здесь, если у вас есть необходимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...