使c#winforms应用程序可用作非托管mfc应用程序的dll

时间:2010-09-02 16:27:16

标签: c# dll mfc

我想知道如何将现有的c#winforms应用程序转换为类库,然后从mfc应用程序中调用它。有没有关于如何做到这一点的参考?我已经尝试使用Google搜索了,但是,除了需要将ComVisible属性设置为true之外,我还没有找到太多信息。

感谢。

4 个答案:

答案 0 :(得分:3)

在visual studio项目属性中将输出类型更改为类库。这将使您的项目编译成一个DLL。同时将comvisible属性设置为true 。因此,将生成一个可调用的包装器和一个可以在mfc项目中使用的tlb文件。

此外,我认为以下链接是关于COM Interop如何在.Net

中工作的非常好的详细解释

http://www.codeproject.com/KB/COM/cominterop.aspx

答案 1 :(得分:1)

查看.NET附带的regasm.exe工具。它将生成必要的注册表项(以及可选的.tlb文件),以允许COM组件访问您的程序集。

答案 2 :(得分:1)

an MSDN sample涵盖了将Winforms用户控件放在MFC应用程序上 - 对话框或视图。除了代码,这应该显示您将需要的项目设置。

答案 3 :(得分:0)

一旦你正确地构建了这个版本,那么你需要让它正常运行。主要问题可能是从非托管窗口正确地为Windows窗体创建父窗口,基本上使托管窗体生活在作为非托管应用程序启动的内部。如果您不使用WPF作为非托管代码和托管表单之间的UI桥接,那么您将需要自己完成这项工作。您可以谷歌此主题获取更多信息,目前没有这个方便的链接。