c# dll在mfc/win32中的引用步骤

通过实验,我发现以下方法可以在vs2005下编译通过,不过在运行时有时仍然出现了不确定现象。具体原因有待继续排查。

一、使用 /clr 编译 MFC 可执行文件或规则 DLL

1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。

2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。

3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。

4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。

5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。

二、在代码引用需要的dll

1.把自己用c#编译过的dll放置到输出文件一起;

2.右键项目名->属性->常规属性->引用->添加新引用->“浏览”属性页->找到自己需要的 dll->确定;

3.代码修改

(一定在 #include "stdafx.h"之后!)

#using "mscorlib.dll"

#using "..\\debug\\DownloaFiles.dll" //换成需要的dll文件

using namespace CGistarMath;//换成dll中类所使用的namespace

三、在dll函数调用代码前加入#pragma managed

这是manage和unmanage混合编程在MFC下的一种实现方式。

四、在dll函数调用代码后加入#pragma unmanaged

五、必须使用c++\clr代码,即在mfc里声明变量用

class ^ a = gcnew class();//声明指针

a->funcName();//使用指针

希望对大家有用,如果知道了怎么使不确定因素解决,请告诉我。