嘗試用 BCB4 訪問 NameService 時遭遇詭異錯誤,而 Visibroker 附帶範例卻能正常編譯運行。經過一夜排查,結論是:**手動從零構建比依賴 Wizard 更可靠**(Wizard 生成的隱含設定可能導致介面不匹配)。
檔案 order.idl:
interface Order {
string Name();
};
File → New → Console Wizard,選「無 VCL 支援」。order.idl 加入專案 → Project → Compile 生成 Stub/Skeleton。File → New → Multitier → Corba Object Implementationorder.idl,Interface 選 Order,其餘保持預設。OrderServer.cpp,找到 OrderImpl::Name() 填入業務邏輯:char* OrderImpl::Name() {
return "Hi, I am Test CorbaServer";
}
tcnServer.cpp,專案存為 tcnServer.bpr。Make 建置 → 產出可執行檔。啟動伺服器後,在命令列執行 osfind.exe(位於 Visibroker bin 目錄):
C:\>osfind
osfind: Found one agent at port 14000
HOST: YANGWU
osfind: Found 1 OADs in your domain
HOST: YANGWU
osfind: Following are the list of Implementations started manually.
HOST: YANGWU
REPOSITORY ID: IDL:Order:1.0
OBJECT NAME: OrderObject
...
輸出顯示 OrderObject 已成功向 NameService 註冊,Repository ID 符合 IDL 定義。
osfind 可即時檢視 NameService 註冊狀態,排查連線問題首選。
手動構建雖繁瑣,卻能完全掌控每個細節,避開 Wizard 的黑盒陷阱,是穩健開發 CORBA 應用的不二法門。