这篇文章主要介绍了C#如何调用MFC窗口DLL,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
C#调用MFC 窗口 DLL
MFC DLL
创建一个窗口类,加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 的封装
创建 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);
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持得得之家。
本文标题为:C#如何调用MFC 窗口 DLL


基础教程推荐
- C# 解析XML和反序列化的示例 2023-04-14
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C#中的Linq to JSON操作详解 2023-06-08
- 实例详解C#实现http不同方法的请求 2022-12-26
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- Unity shader实现高斯模糊效果 2023-01-16
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#中 Json 序列化去掉null值的方法 2022-11-18