簡體   English   中英

如何在vc ++中使用c#Dll?

[英]How to use c# Dll in vc++?

我使用命令行(csc)創建了一個dll。 假設dll包含Add(int,int)方法。 現在我想在vc ++中使用add函數?

這該怎么做?

對你的幫助表示感謝。

這就是我在做的事情。

vcproj; 對於這個項目,我有右鍵單擊和鏈接器部分添加其他依賴項。添加dll所在的路徑。

main.cpp中

using namespace Test

void main()

{

  demo d;

  d.add(5,5);

}

錯誤命名空間測試不存在。

怎么解決這個?

我需要在非托管代碼中使用該DLL

你的C#程序集需要ComVisible屬性(在其他一些東西中)。

[assembly: ComVisible(true)] 

這里有一個指南

從MSDN論壇從非托管C ++調用C#

你想要做的只是編譯你想要加載C#code / clr的文件,然后使用C ++ / CLI調用。 您的應用程序的其余部分將保持原生狀態,而您編譯/ clr的那些cpp文件將混合使用本機和CLR。 您應該能夠使用C ++ / CLI語法調用C#庫。

一旦在文件的cl.exe命令行上拋出/ clr,就可以在該文件中調用所需的任何托管代碼,無論它是用VB.net,C#還是C ++ / CLI編寫的。 這是迄今為止你想做的最簡單的方法(從你原生的C ++應用程序中調用C#代碼),雖然它確實有其警告和限制。 總的來說,“它只是工作”。 而且,它比p / invokes更快。

這在很大程度上取決於您正在構建的C ++應用程序的類型。 如果要構建C ++ / CLI程序集,則需要確保項目具有對C#DLL的引用。 一旦完成,您應該能夠按照書面形式鍵入代碼,假設您具有Demo的定義,就像這樣。

namespace Test {
  public class demo {
    public void add(int left, int right) { 
      ...
    }
  }
}

如果要構建正常的,非托管的C ++項目,則必須使用COM interop來訪問程序集。 這涉及使C#項目中的演示類型COMVisible並將其注冊到COM互操作。 之后,您可以像任何其他COM組件一樣訪問它。

暫無
暫無

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

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