zoukankan      html  css  js  c++  java
  • VS建立可供外部调用的MFC类DLL,C#调用MFC调用

    建立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[]。
     
  • 相关阅读:
    Java知识体系之基础知识
    002-JavaNIO
    001-四种常见的IO模型
    c/c++面试题(6)运算符重载详解
    c/c++面试题(5)(c++重要的概念详解)
    c/c++面试题(4)字符串翻转/打印任意进制格式/类型转换
    c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现
    c/c++面试题(2)
    c/c++面试题(1)
    cocos2dx 3.0 之 lua 创建类 (二)
  • 原文地址:https://www.cnblogs.com/Again/p/5337467.html
Copyright © 2011-2022 走看看