1、C# COM:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace MyInterop
{
/// <summary>
/// Summary description for Class1.
/// </summary>
///
[Guid("CE8B0E97-2D79-442B-8BA5-251E6ADB8C64")]
public interface IMyDotNetInterface
{
void ShowDialog();
}
[ClassInterface(ClassInterfaceType.None)]
[Guid("4B1E3C7C-A85C-4338-915F-3789B99B7F6D")]
public class MyDotNetClass : IMyDotNetInterface
{
public void ShowDialog()
{
MessageBox.Show("I am a Managed DotNET C# COM Object Dialog");
}
}
}
2、C++ call
// Cplusplus_console_call_com.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <objbase.h>
#import "MyInterop.tlb" named_guids raw_interfaces_only
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
MyInterop::IMyDotNetInterfacePtr pDotNetCOMPtr;
// e.g. CreateInstance (<namespace::CLSID_<ClassName>)
HRESULT hRes = pDotNetCOMPtr.CreateInstance(MyInterop::CLSID_MyDotNetClass);
if (hRes == S_OK)
{
pDotNetCOMPtr->ShowDialog();
}
CoUninitialize();
return 0;
}