VS建立可供外部调用的MFC类DLL,C#调用MFC调用

时间:2022-08-31 09:15:38

建立MFC DLL工程。一般选共享MFC库

VS建立可供外部调用的MFC类DLL,C#调用MFC调用

 

 

关键是在你生成的CPP中,添加外部调用的接口

VS建立可供外部调用的MFC类DLL,C#调用MFC调用

 

 

如下,意思是将这个函数对外公开。
如果你希望对外提供类,就把这个方法做成工厂。
如果你希望对外提供MFC的窗体,同样在内部new自己的窗体,show,对外保留这个封装好的方法。
由于外部要操作窗体比较麻烦,毕竟不是MFC本身在操作,因此封装好对外提供,效果更佳。
extern "C" __declspec(dllexport) void TheStartCaculate(char* pathFile)

 

VS建立可供外部调用的MFC类DLL,C#调用MFC调用
 
 
 
 
以上已经完成了对生成DLL的输出。
 
---------------------------------------------------------------------------------------------------
C#调用示例
如下图用DLLImport 导入生成的dll文件。
并声明我们的接口到C#中。
然后就可以在这个c#类中作为静态成员被调用了。
 
VS建立可供外部调用的MFC类DLL,C#调用MFC调用
 
代码如下
    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[]。
 
VS建立可供外部调用的MFC类DLL,C#调用MFC调用