簡體   English   中英

C++ CLR win32 還是其他?

[英]C++ CLR win32 or others?

我正在使用 C++,發現有不同種類的 C++,例如 CLR、Win32、MFC....

此外,我發現在其他一些 C# 程序中調用了一些 C++ 庫 cab。 怎么會這樣?

由於C++被認為比C#更快,因為它不需要平台來運行它,但是,如果在CLR中使用C++,它會變得更慢嗎?

The question is: I wanna make a C++ library that call the windows command and return the output, and this library could be called in other C# program. 有可能這樣做嗎? 如果是,C++ 庫是否需要.Net 框架並且運行速度較慢?

你的困惑是可以理解的,但你的理解是有缺陷的。

There's no difference between C++ and using MFC, MFC is a class framework written in C++, just like any other code you might write in C++. 它只是 Microsoft 隨其產品提供的一個框架。

C++/CLI(不是 CLR)並不是真正的 C++。 它是一種類似 C++ 的語言,可編譯為 .net IL 字節碼。 它有很多限制,並且與 C# 和 VB.NET 以及其他 .NET 語言具有相同的限制。 它與 C++ 非常相似,但並不完全相同。

C++/CLI 應用程序編譯為 .net IL 字節碼,因此它們與 C# 應用程序沒有什么不同。 事實上,幾乎任何基於 .net 的語言都會編譯成相同的字節碼,並使用相同的框架。

C# 或 C++/CLI 程序是否“較慢”並不清楚。 太多的 C++ 狂熱者延續了托管代碼緩慢的神話。 它不是。 有些事情很慢,比如第一次運行它(它必須按需編譯代碼),但是因為 .NET Jitter(即時編譯器)可以針對它運行的平台優化代碼,它來使代碼執行更好的。

當然托管代碼也有垃圾回收,這很方便,但在某些情況下可能會導致性能問題。 但是,這不是所有情況,甚至不是大多數情況。

是的,這是可能的。

如果您使用 C++/CLI,您只需將程序集包含在您的 C# 項目中,然后像普通的 C# 代碼一樣調用函數。 If you write it using non-CLI C++ (Win32 and MFC are not kinds of C++, they're just libraries...) then you'll have to use P/Invoke from C# to call functions written in C++.

是的,在某些方面,C++/CLI 可能比普通的 C++ 慢一點。 但不是很多。 CLR 相當快。

暫無
暫無

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

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