时间:2023-01-04 09:37:30 | 栏目:.NET代码 | 点击:次
创建一个窗口类,加public和AFX_EXT_CLASS
注意
在预处理器中添加_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
创建 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; }
[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); }