C#如何调用MFC 窗口 DLL

 更新时间:2022年04月20日 09:23:03   作者:lan154633  
这篇文章主要介绍了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#/VB.NET读取条码类型及条码在图片中的坐标位置实例

    C#/VB.NET读取条码类型及条码在图片中的坐标位置实例

    我们在创建条形码时,如果以图片的方式将创建好的条码保存到指定文件夹路径,可以在程序中直接加载图片使用;已生成的条码图片,需要通过读取图片中的条码信息,如条码类型、条码绘制区域在图片中的四个顶点坐标位置等,可参考本文中的方法
    2023-10-10
  • C#(4.0)不常见的语法

    C#(4.0)不常见的语法

    今天工作遇到4.0新增语法 不解 请教 遂知,简单的整理下,需要的朋友可以参考下
    2012-02-02
  • C#之Expression表达式树实例

    C#之Expression表达式树实例

    这篇文章主要介绍了C#之Expression表达式树,包括了表达式树的原理与用法技巧,需要的朋友可以参考下
    2014-10-10
  • C#求点集的最小包围矩形

    C#求点集的最小包围矩形

    这篇文章主要为大家详细介绍了C#求点集的最小包围矩形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • 一文搞懂c# await,async执行流

    一文搞懂c# await,async执行流

    这篇文章主要介绍了c# await,async执行流的相关知识,文章讲解的非常细致,代码帮助理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 详解C#异步多线程使用中的常见问题

    详解C#异步多线程使用中的常见问题

    本文主要介绍了C#异步多线程使用中的常见问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C#简单生成随机密码的方法示例

    C#简单生成随机密码的方法示例

    这篇文章主要介绍了C#简单生成随机密码的方法,结合具体实例形式分析了C#生成随机密码操作的前台界面与后台处理技巧,需要的朋友可以参考下
    2017-06-06
  • 浅析C# 索引器(Indexer)

    浅析C# 索引器(Indexer)

    这篇文章主要介绍了C# 索引器(Indexer)的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • WPF+SkiaSharp实现自绘投篮小游戏

    WPF+SkiaSharp实现自绘投篮小游戏

    这篇文章主要介绍了如何利用WPF+SkiaSharp实现自绘投篮小游戏。此案例主要是针对光线投影法碰撞检测功能的示例,顺便做成了一个小游戏,很简单,但是,效果却很不错,感兴趣的可以动手尝试一下
    2022-08-08
  • C#简单嵌套flash读取数据的实现代码

    C#简单嵌套flash读取数据的实现代码

    这篇文章主要介绍了C#简单嵌套flash读取数据的实现代码,有需要的朋友可以参考一下
    2013-11-11

最新评论