C#下的dll不同于vc下dll,他们有本质的区别的,一下是我在项目中的步骤和经验总结:
- 建立基于对话框的工程,testDlg;
- 在stdafx.h文件的后面加上 红色的一行 #ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持 #include <afxwinforms.h> //MFC 对 Windows Forms support
#endif // _AFX_NO_AFXCMN_SUPPORT - 在工程上面右键--引用--添加新引用-----浏览;选择C#做好的dll,并把dll需要的一些系统dll拷贝到dll相应目录;
- 在testDlg.h中增加 代码:// Data member for the .NET User Control:
CWinFormsControl<ComGIS::ComMap> m_ctrl1; - 在testDlg.cpp中增加 代码 void testDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
}。。。。。IDC_CTRL1是主窗体上 static 控件的id - 把工程属性设置成 公共语言运行库支持(/clr)
- 编译运行,就可以看到你引用的C#的控件了。