建立MFC DLL工程。一般选共享MFC库
关键是在你生成的CPP中,添加外部调用的接口
如下,意思是将这个函数对外公开。
如果你希望对外提供类,就把这个方法做成工厂。
如果你希望对外提供MFC的窗体,同样在内部new自己的窗体,show,对外保留这个封装好的方法。
由于外部要操作窗体比较麻烦,毕竟不是MFC本身在操作,因此封装好对外提供,效果更佳。
extern "C" __declspec(dllexport) void TheStartCaculate(char* pathFile)
以上已经完成了对生成DLL的输出。
---------------------------------------------------------------------------------------------------
C#调用示例
如下图用DLLImport 导入生成的dll文件。
并声明我们的接口到C#中。
然后就可以在这个c#类中作为静态成员被调用了。
代码如下
public class OutterDLL { [DllImport("E:\HGCUT\trunk\src\SawCut\Data\MiddleCommon\bin\MiddleCommon.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)] public static extern void TheStartCaculate(char[] pathFile); public static void run() { TheStartCaculate("E:\Test_data\平-dllMFC优化\MachineConfig.xml".ToCharArray()); } }
要注意,如果出现类似的报错,其实是 C# 和你库之间联系不上,或者有差异,建议修改
CallingConvention = CallingConvention.StdCall 为 CallingConvention = CallingConvention.Cdecl //C/C++调用方式
或者
MDC DLL要 char*参数,C#这边只有string。建议修改为char[]。