我有一个旧的C ++应用程序,由其他一些MFC和WPF应用程序调用。
此应用程序使用MIDL_INTERFACE
来公开其功能,如:
// in header file:
MIDL_INTERFACE("00020400-0000-0000-C000-000000000046")
IDispatch : public IUnknown
{
public:
virtual HRESULT Connect(long hwnd);
//...
}
MIDL_INTERFACE("D949F6BF-B8D5-4A3F-A7A7-83E9CBCE88DE")
App : public IDispatch
{
public:
HRESULT __stdcall Connect(long hwnd);
//...
}
该应用程序的实现如下:
// in .cpp file:
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow) { /*...*/ }
STDMETHODIMP App::Connect(long hwnd) { /*...*/ }
如果不弄乱没人理解的旧C ++代码,我想用C#重写这个应用程序。 目前,我可以轻松地在其他WPF应用程序中调用我重写的C#应用程序,只需添加对我的.exe文件的引用。
我知道我可以通过在VisualStudio中注册COM互操作来构建一个单独的dll(如this article)。但是如何让其他MFC应用程序引用我的新.exe,而无需额外的COM dll?