可以将C程序编译为DLL

时间:2010-08-10 06:51:42

标签: c c#-3.0

我遇到了客户端获得“C”程序的情况,该程序在客户端应用程序端对列进行加密。现在,在支持C#的脚本组件之一的DataWarehousing项目中使用它。

有没有办法将这个C程序编译成dll并导入到C#[或]我们是否需要在C#中重写它?

由于

5 个答案:

答案 0 :(得分:3)

如果客户端的代码已经在DLL中,则可以使用C#中的P \ Invoke来使用它中的所有例程。这是tutorial

答案 1 :(得分:1)

混合托管(c#)和非托管(c)代码并不太难,C#有一个很棒的功能pinvoke来执行此操作,还可以查看有关托管和非托管代码接口的this tutorial,然后你可以将dll编译为普通的C dll

答案 2 :(得分:1)

它可以编译为dll,但您可能需要对源代码进行一些更改。看看this tutorial。要在C#中使用你的dll,请查看P / Invoke here。这应该足以让你前进。

答案 3 :(得分:1)

是的,这是可能的。

在visual studio中创建一个新的win32 dll项目。假设你想创建一个名为sum的C方法,并通过dll使其可用。首先,您创建方法:

int _stdcall sum(int x , int y)
{
return x+y;
} 

如果VS没有创建.def文件(它应该这样做),那么创建一个.def文件并在该文件中写下以下内容:

LIBRARY Example
DESCRIPTION Example library for C

EXPORTS
        sum @1

这将在加载dll时创建一个名为sum的可访问方法。现在,您必须使用DLLImport在C#项目中编译和使用它。

答案 4 :(得分:0)

我没有使用P / Invoke,而是发现创建C ++ / CLI类库项目更容易,您可以用C ++代码编写托管C代码的托管类。然后从C#项目中添加对类库的引用,并直接调用包装类。