题
我的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。
不隶属于 StackOverflow