在c#中使用非托管代码(C)

时间:2013-08-15 04:40:20

标签: c# c unmanaged managed

我正在开发一个项目,它结合了一个用C语言编写的非常大的开源项目(OSP),并试图在C#中构建一个前端。我目前正在使用Visual Studio 2012 Express编译OSP,并从该项目中生成所有.exe,.dll等。

我应该如何执行集成?(请记住,我可以完全访问.h / .c文件)我尝试使用IJW(It Just Works)方法,但它没有出现允许我导入我刚编译的.dll的引用。除此之外,我不知道如何在C#中执行各种功能(除了向.exe发送命令行命令,我不想这样做。)

我是否需要使用IJW的特殊选项/参数编译OSP,还是需要重写代码?

1 个答案:

答案 0 :(得分:2)

对于用C编写的DLL,您需要在C#中编写等效声明,而不是添加对该DLL的引用。

这称为 PInvoke

class ABC
{
    [DllImport("abc.dll")]
    public static extern int FuncX(int x, int y);
}