ProudNet.Cn
WebsiteProud ConsoleLanguage
  • 🌐ProudNet
    • ProudNet 簡介
    • 下載並安裝
      • ProudNet授權認證方法
      • AMI
    • 項目設定
      • C++
      • C#
      • Mac Xcode
      • Linux
      • Unity3D
        • iOS 建置
      • Unreal Engine 4
      • 運行 PIDL 編譯器
    • 使用 ProudNet
      • 伺服器和客戶端
        • 如何使用伺服器
        • 如何使用客戶端
      • RMI
        • 如何使用RMI
      • PIDL
        • 如何使用PIDL
      • 事件處理
      • 通訊訊息
      • P2P 通訊
        • 如何使用P2P通訊
    • 活用 ProudNet
      • 如何使用它
      • 性能小貼士
    • 在 ProudNet 中使用 DB
      • DB Cache System ver.2
        • DB Cache 理論和理解
        • DB Cache 安裝和網絡設置
        • DB Cache 伺服器和用戶端
        • DB Cache 使用與活用
          • DB Cache 活用法
      • ADO API
      • ODBC API
    • ProudNet 實用程式
  • ProudNet note
    • 技術說明
      • 對主循環的理解
      • 配置服務器防火牆
      • 加密和解密
      • 發生錯誤時的應對事項
      • 錯誤信息列表
      • 同步角色位置
      • 客戶端與服務器通信
      • MiniDump (Error Dump System)
      • [1.6 版本] 服務器間 LAN 通訊器
    • 詞彙表
    • Sample 例題
  • 🌐ProudChat
    • 介紹及使用指南
    • 下載 SDK
      • C++
      • C#
      • Unity3D
      • Unreal Engine 4
Powered by GitBook
On this page
  • 1. Windows
  • 2. Linux
  • 3. C#
  • - RMI proxy, stub類別public, internal, private設定
  1. ProudNet
  2. 項目設定

運行 PIDL 編譯器

Last updated 1 year ago

1. Windows

您可以使用 方便地建立和編譯 PIDL 文件,但如果您無法使用它,請使用下列方法設定 PIDL Custom Build。

1-1. 在 Visual Studio 專案中設定 PIDL Custom Build

每個建置設定的詳細資訊如下。

命令列: <PIDL.exe所在路徑>\PIDL.exe "%(FullPath)" -outdir .

註釋: Compiling %(Filename).pidl ...

輸出: %(RootDir)%(Directory)%(Filename)_common.cpp;%(RootDir)%(Directory)%(Filename)_common.h;%(RootDir)%(Directory)%(Filename)_proxy.cpp;%(RootDir)%(Directory)%(Filename)_proxy.h;%(RootDir)%(Directory)%(Filename)_stub.cpp;%(RootDir)%(Directory)%(Filename)_stub.h;%(Outputs)

附加從屬性: <PIDL.exe所在路徑>\PIDL.exe

  • PIDL.exe位於ProudNet安裝路徑的util資料夾中。

  • Debug和Release必須設定相同。

所有設定完成後,您可以編譯 PIDL 檔案並查看如下所示的輸出。

1>---— 開始建構: 專案: ..., 構成: Release Win32 ---—
1>Compiling TestC2C.pidl ...
1>建置日誌保存到“...”。
1>ProudNetTest_2005 - 錯誤:0,警告:0
========== 建置:1 成功,0 失敗,0 最新,0 跳過 ==========


2. Linux

在Ubuntu上安裝開源Mono庫的範例 ※ 開源 Mono 專案支援 Linux、Windows 和 Mac OS。

$sudo apt-get install mono-gmcs
$sudo apt-get install mono-runtime

在CentOS上安裝開源Mono庫的範例 ※ 開源 Mono 專案支援 Linux、Windows 和 Mac OS。

$sudo yum install mono-devel
$sudo yum install mono-complete

在Mono平台上運行PIDL編譯器的範例

$pwd
/home/ProudNet/util
$mono PIDL.exe ../Sample/Simple/Common/*.pidl -outdir ./


3. C#

RMI 也可以在 C# 語言中使用,為此,PIDL 編譯器也為 C# 語言產生代理程式和存根程式碼。

執行以下命令將產生 C# 語言的代理程式和存根程式碼。 (現有的 -clr 與 -cs 相同。)

PIDL.exe -cs <input-file-name>

常用模組推薦使用C#語言建立的proxy和stub。 與 PIDL 一樣,此模組需要從 C# 專案和自訂建置輸入 PIDL 檔案。

建構C2S.pidl後所建立的代理和存根如下。

  • C2S_common.cs

  • C2S_proxy.cs

  • C2S_stub.cs

將這些檔案包含在您的 C# 專案 (.csproj) 中。 但是,這些檔案是建置結果,不應放置在原始程式碼管理(例如 SVN 等)中,因為唯讀檔案中可能會出現寫入錯誤。

我們建議使用編輯器開啟 .csproj 檔案並進行以下修改:

<Target Name="BeforeBuild">
<ItemGroup>
<Compile Include="C2S_common.cs" />
<Compile Include="C2S_proxy.cs" />
<Compile Include="C2S_stub.cs" />
</ItemGroup>
 
</Target>
<Target Name="AfterBuild">
</Target>

C#語言中建立的Proxy和Stub是C++中的同名類,它們的用法也是一樣的。

- RMI proxy, stub類別public, internal, private設定

PIDL編譯器產生的代理類別、存根類別和公用類別的存取修飾符預設為internal。 這些類別可以從同一模組(或組件)內的不同來源使用,但不能從其他模組使用。

但是,當您建立一個單獨的模組來收集這些類別並希望在其他模組中使用此模組中的類別時,您可能需要將存取修飾符變更為 public。

在這種情況下,設定 PIDL 編譯器產生的類別的存取修飾符屬性,如下所示。

// This will let proxy, stub and common classes to have access modifier 'public'.
[marshaler(clr)=MyMarshaler, access=public]
global MyC2S 3000
{
    Foo(...);
}

Visual Studio 2005 和 2008 版本支援,因此它們會自動設置,而無需在每次新增 PIDL 檔案時設定自訂生成。 Visaul Studio 2010 及更高版本可使用Build customizations。

🌐
在 C# 專案中為 PIDL 檔案設定自訂構建
Custom Build Rules
PIDL附加元件