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();//使用指针
希望对大家有用,如果知道了怎么使不确定因素解决,请告诉我。
------------------------------------------------------------------------
email : aicrosoft1104@126.com
吃遍天下。