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[]。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM