C#如何调用MFC|C#如何调用MFC 窗口 DLL
目录
- C#调用MFC 窗口 DLL
- MFC DLL
- MFC DLL属性
- C# 调用 C++ MFC DLL
- C++ MFC DLL 的封装
- C# 中调用,CharSet须设置为多字节的 Ansi
C#调用MFC 窗口 DLL
MFC DLL
创建一个窗口类,加public和AFX_EXT_CLASS
文章图片
MFC DLL属性
【C#如何调用MFC|C#如何调用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 的封装
创建 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须设置为多字节的 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); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- vue中怎么区分不同的环境
- 如何删除系统启动项
- 如何格式化硬盘驱动器适用于Windows与Mac
- 在Windows系统下如何格式化外部的驱动器
- 如何双打开Windows与OS X的Mac上
- 如何在Windows上安装Git
- 【MQ】java|【MQ】java 从零开始实现消息队列 mq-02-如何实现生产者调用消费者()
- 如何修复未识别网络无法访问Internet的10种最佳方法
- 如何刻录win7系统到sony安装盘呢?
- 如何安装系统win7呢?