<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 互操作性概述(C# 編程指南) 本主題描述在 C# 托管和非托管代碼之間實現互操作性的方法。 ## 平臺調用 平臺調用是一種服務,它使托管代碼可以調用在動態鏈接庫 (DLL)(如 Microsoft Win32 API 中的那些 DLL)中實現的非托管函數。此服務將查找并調用導出的函數,然后根據需要跨越互用邊界封送其參數(整數、字符串、數組、結構等)。 有關更多信息,請參見[使用非托管 DLL 函數](https://msdn.microsoft.com/zh-cn/library/26thfadc.aspx)和 [如何:使用平臺調用播放波形文件(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/ms173187.aspx)。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | [公共語言運行時 (CLR)](https://msdn.microsoft.com/zh-cn/library/8bs2ecf4.aspx) (CLR) 管理對系統資源的訪問。調用 CLR 外部的非托管代碼會避開此安全機制,因此會帶來安全風險。例如,非托管代碼可能會直接調用非托管代碼中的資源,從而避開 CLR 安全機制,。有關更多信息,請參見 [.NET Framework Security](http://go.microsoft.com/fwlink/?LinkId=37122)(.NET Framework 安全性)。 | ## C++ Interop 可以使用 C++ Interop(又稱為 It Just Works (IJW))包裝本機 C++ 類,使得用 C# 或其他 .NET Framework 語言編寫的代碼可以使用它。為此,可以編寫 C++ 代碼來包裝本機 DLL 或 COM 組件。與其他 .NET Framework 語言不同,Visual C++ 支持互操作性,允許托管代碼和非托管代碼存在于同一個應用程序中,甚至存在于同一個文件中。然后,可以使用 **/clr** 編譯器開關生成 C++ 代碼,從而生成托管程序集。最后,在 C# 項目中添加一個對該程序集的引用,并像使用其他托管類那樣使用被包裝對象。 ## 向 C# 公開 COM 組件 可以使用 C# 項目中的 COM 組件。一般步驟如下所示: 1. 找到要使用的 COM 組件并注冊它。使用 regsvr32.exe 注冊或注銷 COM DLL。 2. 在項目中添加對 COM 組件或類型庫的引用。 添加引用時,Visual Studio 會用到[Tlbimp.exe(類型庫導入程序)](https://msdn.microsoft.com/zh-cn/library/tt0cf3sx.aspx),后者將類型庫作為輸入并輸出一個 .NET Framework 互操作程序集。該程序集又稱為運行時可調用包裝 (RCW),其中包含了包裝類型庫中的 COM 類和接口的托管類和接口。Visual Studio 將生成組件的引用添加至項目。 3. 創建在 RCW 中定義的類的實例。而這樣會創建 COM 對象的實例。 4. 像使用其他托管對象那樣使用該對象。當垃圾回收對該對象進行回收后,COM 對象的實例也會從內存中釋放出來。 有關更多信息,請參見 [向 .NET Framework 公開 COM 組件](https://msdn.microsoft.com/zh-cn/library/z6tx9dw3.aspx)。 ## 向 COM 公開 C# COM 客戶端可以使用已經正確公開的 C# 類型。公開 C# 類型的基本步驟如下所示: 1. 在 C# 項目中添加互操作特性。 可以通過修改 Visual C# 項目屬性使程序集 COM 可見。有關更多信息,請參見 [“程序集信息”對話框](https://msdn.microsoft.com/zh-cn/library/1h52t681.aspx)。 2. 生成 COM 類型庫并對它進行注冊以供 COM 使用。 可以修改 Visual C# 項目屬性以自動注冊 COM interop 的 C# 組件。Visual Studio 使用 [Regasm.exe(程序集注冊工具)](https://msdn.microsoft.com/zh-cn/library/tzat5yw6.aspx),方法是使用 **/tlb**?命令行切換,其將管理的組件作為輸入,以生成類型庫。此類型庫描述程序集中的 **public** 類型并添加注冊表項,以便 COM 客戶端可以創建托管類。 有關更多信息,請參見[向 COM 公開 .NET Framework 組件](https://msdn.microsoft.com/zh-cn/library/zsfww439.aspx)和 [COM 類示例(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/c3fd4a20.aspx)。 ## 請參閱 [Improving Interop Performance](http://go.microsoft.com/fwlink/?LinkId=99564) [Introduction to COM Interop](http://go.microsoft.com/fwlink/?LinkId=112406) [Marshaling between Managed and Unmanaged Code](http://go.microsoft.com/fwlink/?LinkId=112398) [與非托管代碼交互操作](https://msdn.microsoft.com/zh-cn/library/sd10k43k.aspx) [Advanced COM Interoperability](https://msdn.microsoft.com/zh-cn/library/bd9cdfyx.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看