将Borland C ++方法暴露给C#

时间:2009-05-06 14:11:23

标签: c# c++ .net c++builder

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

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

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

我需要遵循的步骤来转换代码DLL 然后在C#??

中使用它

3 个答案:

答案 0 :(得分:1)

首先,您必须确保方法是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;
}

答案 1 :(得分:0)

一旦你编译了DLL,你需要在.NET中进行访问才能访问它,使用DLLImport属性。

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

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

应该注意的是,一旦调用该函数,dll将由程序加载,并且在程序关闭之前不会释放。你可以动态加载dll,但这要复杂得多。如果你有需要,我可以在这里解释一下。

答案 2 :(得分:0)

注意你的术语 在您的示例中,UploadBitstream的功能不是方法 如果它确实是一个类中的方法,则很难使用Borland编译的DLL中的类。

如果您的代码实际上是C而不是C ++,那么您应该能够创建兼容的DLL 使用C ++ Builder实现简单的C风格函数。

请参阅以下SO问题: Use a dll from a c++ program. (borland c++ builder and in general) 我列出了各种编译器设置,这些设置也适用于创建兼容的DLL。