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