我的Borland C ++代码中有以下方法,
static bool UploadBitstream(void)
{
//Some code Implementation
}
我正在尝试将其转换为DLL并在C#中访问它。
我需要遵循的步骤来转换代码DLL 然后在C#??
中使用它答案 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。