C#如何調用MFC 窗口 DLL
C#調用MFC 窗口 DLL
MFC DLL
創(chuàng)建一個窗口類,加public和AFX_EXT_CLASS

MFC DLL屬性

注意
- MFC的使用:在共享DLL中使用MFC
- 公共語言運行時支持:公共語言運行時支持(/clr)

在預處理器中添加_AFXEXT
在項目名稱.cpp里添加要輸出的函數

注意第一行AFX_MANAGE_STATE(AfxGetStaticModuleState())不可少
C# Application
添加引用:

然后將MfcDll.dll和MfcDll.lib放在C# Application里的Debug下
Form1.cs添加:
using System.Runtime.InteropServices;
進行如下調用:

若是報錯PInvoke簽名不對,CallingConvention=CallingConvention.StdCal改成CallingConvention = CallingConvention.Cdecl
C# 調用 C++ MFC DLL
C++ MFC DLL 的封裝
創(chuàng)建 MFC DLL 項目
選擇 DLL type 為 Regular DLL using shared MFC DLL
設置項目屬性的 Character Set 為 Use Multi-Byte Character Set,若不設置,接收的字符串只有一個字符
方法需要被導出,否則導出名稱會被自動命名,具體如下
extern "C" __declspec(dllexport) BOOL AddSignature(char* csFileFullName)
{
? ? AfxMessageBox(csFileFullName);
? ? return true;
}C# 中調用,CharSet須設置為多字節(jié)的 Ansi
[DllImport("CppDllTest.dll", EntryPoint = "AddSignature", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private static extern bool AddSignature(string path);
?
public static bool MyAddSignature(string strMy)
{
? ? return AddSignature(strMy);
}以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

