Вопрос

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

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

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

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

Это было полезно?

Решение

Во-первых, вы должны убедиться, что методы определены 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;
}

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top