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

MFC DLL屬性

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

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

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

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

若是報錯PInvoke簽名不對,CallingConvention=CallingConvention.StdCal改成CallingConvention = CallingConvention.Cdecl
C# 調(diào)用 C++ MFC DLL
C++ MFC DLL 的封裝
創(chuàng)建 MFC DLL 項目
選擇 DLL type 為 Regular DLL using shared MFC DLL
設(shè)置項目屬性的 Character Set 為 Use Multi-Byte Character Set,若不設(shè)置,接收的字符串只有一個字符
方法需要被導(dǎo)出,否則導(dǎo)出名稱會被自動命名,具體如下
extern "C" __declspec(dllexport) BOOL AddSignature(char* csFileFullName)
{
? ? AfxMessageBox(csFileFullName);
? ? return true;
}C# 中調(diào)用,CharSet須設(shè)置為多字節(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);
}以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#簡單嵌套flash讀取數(shù)據(jù)的實現(xiàn)代碼
這篇文章主要介紹了C#簡單嵌套flash讀取數(shù)據(jù)的實現(xiàn)代碼,有需要的朋友可以參考一下2013-11-11

