COM控件跨平台//ATL工程里加一个MFC对话框,能在linux使用?该如何处理

COM控件跨平台//ATL工程里加一个MFC对话框,能在linux使用?
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
------解决方案--------------------
COM只是说跨语言,从没说过跨平台
------解决方案--------------------
com组件里 的sendMsg函数,是啥意思? 我怎么调用呀?


1:在odl文件中定义

1     dispinterface _DSyncLink
 2     {
 3         properties:
 4             // NOTE - ClassWizard will maintain property information here.
 5             //    Use extreme caution when editing this section.
 6             //{{AFX_ODL_PROP(CSyncLinkCtrl)
 7             //}}AFX_ODL_PROP
 8 
 9         methods:
10             // NOTE - ClassWizard will maintain method information here.
11             //    Use extreme caution when editing this section.
12             //{{AFX_ODL_METHOD(CSyncLinkCtrl)
13             [id(1)] short sendMsg(BSTR fileName,BSTR name,BSTR signStr); 
14             [id(2)] short testOcx(BSTR str);
15             //}}AFX_ODL_METHOD
16             
17 
18             [id(DISPID_ABOUTBOX)] void AboutBox();
19     };

 

2:在ctl.h 文件中定义
1     DECLARE_MESSAGE_MAP()

3 // Dispatch maps
4     //{{AFX_DISPATCH(CSyncLinkCtrl)
5     afx_msg short sendMsg(LPCTSTR fileName,LPCTSTR name,LPCTSTR signStr);
6     afx_msg short testOcx(LPCTSTR str);
7     //}}AFX_DISPATCH
8     DECLARE_DISPATCH_MAP()


1 // Dispatch and event IDs
 2 public:
 3     enum {
 4         
 5     //{{AFX_DISP_ID(CSyncLinkCtrl)
 6     eventidResult = 1L,
 7     dispidSendMsg = 2L,
 8     dispidTestOcx = 3L,
 9     //}}AFX_DISP_ID
10     };
11 };


3:ctl.cpp文件中定义


BEGIN_DISPATCH_MAP(CSyncLinkCtrl, COleControl)
    //{{AFX_DISPATCH_MAP(CSyncLinkCtrl)
    DISP_FUNCTION(CSyncLinkCtrl, "sendMsg", sendMsg, VT_I2, VTS_BSTR VTS_BSTR VTS_BSTR)
    DISP_FUNCTION(CSyncLinkCtrl, "testOcx", testOcx, VT_I2,VTS_BSTR)
    //}}AFX_DISPATCH_MAP
    DISP_FUNCTION_ID(CSyncLinkCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()


short CSyncLinkCtrl::testOcx(LPCTSTR str) 
{
        return 8;
        
}




引用:
COM只是说跨语言,从没说过跨平台