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#/VB.NET讀取條碼類型及條碼在圖片中的坐標(biāo)位置實例
我們在創(chuàng)建條形碼時,如果以圖片的方式將創(chuàng)建好的條碼保存到指定文件夾路徑,可以在程序中直接加載圖片使用;已生成的條碼圖片,需要通過讀取圖片中的條碼信息,如條碼類型、條碼繪制區(qū)域在圖片中的四個頂點坐標(biāo)位置等,可參考本文中的方法2023-10-10C#簡單嵌套flash讀取數(shù)據(jù)的實現(xiàn)代碼
這篇文章主要介紹了C#簡單嵌套flash讀取數(shù)據(jù)的實現(xiàn)代碼,有需要的朋友可以參考一下2013-11-11