一、使用/clr编译MFC可执行文件或规则C# DLL函数.
1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。
2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“
公共语言运行库支持(/clr)”。
3、在相同的窗格中,确保将“MFC的使用”设置为“
在静态库中使用 MFC”。
// 4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库/Zi”(而不是“/ZI”)。
5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试DLL(/MDd)”或“多线程DLL(/MD)”之一。
二、在代码引用需要的dll.
//http://topic.csdn.net/t/20030714/21/2027862.html 参考问题
using <mscorlib.dll>;//
如果你用托管方式,那么尽量就用.NET Frameworks提供的一切可用的类库
using "
DownloaFiles.dll"; //换成需要引用的的dll文件。 放置到你的源程序文件加下
using namespace System; //系统提供的命名空间
using namespace ADMessage_test; //换成dll中类所使用的namespace.,如果有多层次的,要分别引用,一层一层的包含。
//另外,查看C#的DLL中封装的命名空间和相关类及类的方法属性,可以用C#打开,添加引用中看到。
三、在C# DLL函数调用代码前加入#pragma managed
这是manage和unmanage混合编程在MFC下的一种实现方式。
以上介绍C++调用C# DLL函数,希望对你有所帮助。
四 、几点要记住:
1 使用#using引用C# DLL,而不是#include.我就是想当然的使用了后者,所以浪费了一上午的时间;
2 别忘了using namespace CSLib;
3 使用C++/clr语法,采用正确的访问托管对象,即:使用帽子‘^’,而不是星星‘*’。
4 将要调用的C#的DLL文件要放在两个地方,一个是在源代码文件夹下,另一个是在生成EXE文件所在的文件夹,否则不能调试DLL,或者程序错误退出。请注意和重视Visual Studio的输出窗口的提示内容。
现附上我在研究C++调用C#的DLL文件时使用的一个小实例上传到我的资源目录下,欢迎互相借鉴学习。
http://download.csdn.net/detail/canhui2009/4513750