2010-08-10 146 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#項目中進行編譯和使用。