我正在尝试使用自己的代码与硬件交互。供应商在他的网站上提供了一个DLL,其中包含一些C#示例代码,该DLL似乎是从Visual Basic编译的。我想知道如何在C ++中使用此DLL。 C ++ / CLI是做到这一点的唯一方法吗?还是有其他方法可以使我的代码跨平台兼容?
简单的例子:假设我们在.NET程序集(hello.dll)中有一个托管类Hello。
//This is c# but it could be also vb. Compilator of c# and VB.net translate it to same thing .Net assembly dll. Which is internaly exactly the same as c# dll.
class Hello
{
public void HelloWorld()
{
Console.Writeline("Hello World!");
}
}
现在我们需要为Hello定义本机代理类:
class Hello
{
public:
Hello() : wrapper_("hello.dll", "namespace name") {}
void HelloWorld()
{
wrapper_("Hello");
}
private:
nativeAdapter::NativeProxy wrapper_;
};
}
在我们的主要功能中,我们可以像使用托管类一样使用代理:
int main(int, char **)
{
Namespace::Hello hello;
hello.Hello();
return 0;
}