我的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();
}

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

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

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

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

请参阅以下SO问题: 使用来自的dll一个c ++程序。 (borland c ++ builder和一般情况下) 我列出了各种编译器设置,这些设置也适用于创建兼容的DLL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top