在創建COM對象前,我們必須向COM Interop注冊該對象。右擊方案管理器中的工程名字,點擊快捷菜單上的“屬性”選項,然後再點擊“配置”->;“創建”,擴展output小節,將Register for COM Interop選項的值設置為true。這樣,一個COM對象就能夠與可管理性應用程序進行交互。
為了使COM對象能夠被外部對象調用,類庫組合必須有一個強名字。創建強名字需要用到SN.EXE名字:
sn -k Database_COM_Key.snk
打開AssemblyInfo.cs,並修改下面一行的內容:
[assembly: AssemblyKeyFile(";Database_COM_Key.snk";)]
創建對象。創建對象會生成一個可以被導入到可管理性或非可管理性代碼中的類庫。
第二部分:使用Visual C++創建訪問COM對象的客戶端軟件
·使用VC++開發環境創建一個簡單的工程。
·使用#import directive導入類型庫。
·在界面中創建一個Smart Pointer,從接口中執行COM類提供的功能。確保在應用程序加載時添加CoInitialize()調用:
CoInitialize(NULL);
Database_COMObject::DBCOM_InterfacePtr p(__uuidof(Database_COMObject::DBCOM_Class));
db_com_ptr = p ;
db_com_ptr->;Init(";scott"; , ";tiger";);
下面的代碼對Customers數據庫表執行一個SQL命令,返回給定ID的客戶的信息:
char cmd[1024];
sprintf(cmd , ";SELECT COMPANYNAME , CONTACTNAME ,
CONTACTTITLE , ADDRESS FROM CUSTOMERS WHERE CUSTOMERID = '%s'"; , m_id );
const char *p ;
bool ret = db_com_ptr->;ExecuteSelectCommand(cmd);
if ( ! db_com_ptr->;NextRow() ) return ;
_bstr_t mData = db_com_ptr->;GetColumnData(3);
p = mData ;
m_address = (CString)p ;