首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ OPC 客戶端連結錯誤:缺少 IID 定義的解決方案

     編輯:程式設計綜合問答

錯誤訊息:

unresolved external symbol IID_IOPCServer
unresolved external symbol IID_IOPCSyncIO
unresolved external symbol IID_IOPCItemMgt

原因:專案包含了 `opcda.h`、`opccomn.h` 等標頭,但未連結包含 GUID 定義的來源檔(通常為 `opcda_i.c`、`opccomn_i.c`)。

解決方法

方案一:將 .c 檔加入專案編譯(推薦)

在 Visual Studio 專案中加入現有項目 → 選取 `opcda_i.c`、`opccomn_i.c` → 確認編譯動作為 C/C++ Compiler。

方案二:手動定義 GUID(快速測試用)

// 在任一 .cpp 最前面定義一次即可
#include   // 強制定義 GUID
#include "opcda.h"
#include "opccomn.h"

// 或手動展開(不建議長期維護)
const IID IID_IOPCServer = {0x39c13a4d,0x011e,0x11d0,{0x96,0x75,0x00,0x20,0xaf,0xd8,0xad,0xb3}};
const IID IID_IOPCItemMgt  = {0x39c13a54,0x011e,0x11d0,{0x96,0x75,0x00,0x20,0xaf,0xd8,0xad,0xb3}};
const IID IID_IOPCSyncIO   = {0x39c13a52,0x011e,0x11d0,{0x96,0x75,0x00,0x20,0xaf,0xd8,0xad,0xb3}};

專案設定檢查清單

  • ☑ 包含目錄:`$(OPC_SDK)\Include`
  • ☑ 連結庫目錄:`$(OPC_SDK)\Lib`
  • ☑ 附加相依性:`opcda.lib` `opccomn.lib` `ole32.lib` `oleaut32.lib`
  • ☑ 編譯選項:`/D _WIN32_DCOM` ` /D WIN32_LEAN_AND_MEAN`
  • ☑ 字元集:Unicode(或一致設定 MBCS)

進階:使用 #import 自動產生智慧指標

#import "opcda.dll" no_namespace named_guids raw_interfaces_only
// 產生的 .tlh/.tli 已含 GUID 定義,無需手動加 .c 檔

適合快速原型,正式專案建議靜態連結 SDK 提供的 .lib 與 .c 檔。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved