2010-08-10 157 views
2

我得到了客户端得到'C'程序,在客户端应用程序对列进行加密的情况。现在,在支持C#的脚本组件之一中,现在可以在DataWareHousing项目中使用它。可以将C程序编译为DLL

有没有一种方法可以将C程序编译为dll并导入到C#中[或]我们是否需要在C#中重新编写此代码?

感谢

+0

如果连C都不能编译它们,你认为怎么写DLL? – Blindy 2010-08-10 06:54:24

回答

3

如果客户端的代码已经在DLL中,你可以在C#中,使用P \调用使用所有的程序从它。这是一个tutorial

1

混合托管(c#)和非托管(c)代码并不太困难,C#有一个很好的功能叫做pinvoke来做到这一点,在接口托管和非托管代码上也检查出this tutorial,那么你可以编译dll作为一个正常的C DLL

1

它可以编译为一个DLL,但你可能需要对源代码进行一些更改。看看this tutorial。并在C#中使用你的DLL检出P/Invoke here。这应该足以让你走。

0

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

1

是的,这是可能的。

在visual studio中创建一个新的win32 dll项目。比方说,你想创建一个名为sum的C方法,并通过DLL提供。首先,创建方法:

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

如果VS didnt创建一个DEF文件(它应该这样做),然后创建一个.DEF文件,并写入该文件中的以下内容:

LIBRARY Example 
DESCRIPTION Example library for C 

EXPORTS 
     sum @1 

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