簡體   English   中英

如何使用C程序中的現有C#代碼

[英]How to use existing C# code from C program

有沒有辦法可以開發一個示例C#程序,並使其成為DLL,並在我的C程序中使用它?

比方說,C#DLL有一個函數add(int a, int b) ,它返回或打印結果。 我想在我的C程序中使用它。 任何示例鏈接都應該是一個很好的幫助。

最簡單的方法是將C#DLL公開為COM對象,然后從C / C ++應用程序創建它的實例。 有關分步指南,請參閱MSDN

或者,如果它實際上是您希望能夠從中調用C#DLL的C ++應用程序,則可以創建混合模式 C ++ / CLI應用程序,該應用程序包含托管代碼和非托管代碼。 然后,C ++應用程序可以直接從托管C#DLL調用函數。

另請參閱MSDN上的“托管/非托管代碼互操作性概述”


編輯:沒有任何更多的信息,而不是“它在C中不起作用”,我甚至不知道你嘗試過哪些上述建議。 正如我所說的那樣,我不確定第二種是否能用直C(從未嘗試過),但我認為沒有理由為什么第一種不會。

無論如何,快速而骯臟的修復可能是將C#函數包裝在C ++ DLL中,然后從C應用程序調用它。 確保您將要從C ++ DLL導出的任何函數聲明為extern ,否則它們的名稱將被修改為C ++名稱,這在C中是不可能的。請參閱此處以獲取更多信息: http:// www .parashift.com / C ++ - FAQ-精簡版/混合-C-和-cpp.html

這是一個解決方案。 該解決方案提供了[DllExport]屬性,允許從C調用C#函數。

https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports

C#代碼

class Test
{
     [DllExport("add", CallingConvention = CallingConvention.StdCall)]
     public static int Add(int left, int right)
     {
         return left + right;
     } 
}

C代碼

 int main()
 {
      int z = add(5,10);
      printf("The solution is found!!! Z is %i",z);
      return 0;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM