繁体   English   中英

将Borland C ++方法公开到C#

[英]Expose Borland C++ methods to C#

我在Borland C ++代码中有以下方法,

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

我正在尝试将其转换为DLL并在C#中访问它。

我需要执行以下步骤来转换代码DLL,然后在C#中使用它?

首先,必须确保方法是外部定义的。 然后,您需要声明方法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之后,只需使用DLLImport属性即可在.NET中进行访问以访问它。

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

如果您需要指针或类似的东西,它会变得更加复杂,但是对于void函数而言,就是这么简单。

应该注意的是,一旦您调用该函数,该dll将被您的程序加载,直到您的程序关闭,该dll才会被释放。 您可以动态加载dll,但这要复杂得多。 如果您有需要,我可以在这里解释。

注意您的术语。
在您的示例中,UploadBitstream是函数而非方法。
如果确实是类中的方法,则很难使用Borland编译的DLL中的类。

如果您的代码实际上是C而不是C ++,则应该可以使用C ++ Builder为简单的C样式函数创建兼容的DLL。

请参阅以下SO问题: 使用c ++程序中的dll。 (Borland C ++ Builder和一般而言) ,其中列出了各种编译器设置,这些设置也将适用于创建兼容的DLL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM