[英]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.