如何利用MFC编写的.exe调用C#编写的dll动态库
来源:互联网 发布:爱淘宝红包领取 编辑:程序博客网 时间:2024/04/28 20:11
如何利用MFC编写的.exe调用C#编写的dll动态库
由于项目的需要,将C#编写的dll动态库运用到MFC编写的.exe程序中,具体运用步骤如下所示:
一、使用/clr方式来编译MFC文件,具体操作主要是更改MFC所在的项目属性:
1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。
2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。
3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。
4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。
5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。
二、在MFC所在的头文件中加载相应的动态库
#using <mscorlib.dll>
#using "DownloaFiles.dll" //换成需要的DownloaFiles.dll文件
using namespace System;(如果System版本太低,可以直接用名称空间限定 System::IServiceProvider或将该句注释掉
using namespace ADMessage_test;//换成dll中类所使用的ADMessage_test (namespace)
三、在调用dll中的API之前,需要在函数调用之前加入#pragma managed
四、使用C#动态库的类时,不可以用MFC中的方式进行调用,而是需要使用C++/clr语法,采用正确的访问托管对象,如:
Class1 ^c = gcnew Class1();
c->Name = "zzj";
printf("%s/n", c->Name);
其中,Class1 是C#动态库所定义的类。
五、以下几点需要注意
1.在加载C#生成的dll动态库时,不能使用MFC的#include方式,而是采用#using方式来引用C# 的DLL动态库。
2.一般C#都是使用名字空间模式,所以在引用动态库成功后必须使用using namespace ADMessage_test;
3.由于使用的是C++/clr语法,所以应该采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。
网上的Demo网址:http://blog.163.com/xiao_caoo/blog/static/372276662012718113022795/
由于项目的需要,将C#编写的dll动态库运用到MFC编写的.exe程序中,具体运用步骤如下所示:
一、使用/clr方式来编译MFC文件,具体操作主要是更改MFC所在的项目属性:
1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。
2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。
3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。
4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。
5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。
二、在MFC所在的头文件中加载相应的动态库
#using <mscorlib.dll>
#using "DownloaFiles.dll" //换成需要的DownloaFiles.dll文件
using namespace System;(如果System版本太低,可以直接用名称空间限定 System::IServiceProvider或将该句注释掉
using namespace ADMessage_test;//换成dll中类所使用的ADMessage_test (namespace)
三、在调用dll中的API之前,需要在函数调用之前加入#pragma managed
四、使用C#动态库的类时,不可以用MFC中的方式进行调用,而是需要使用C++/clr语法,采用正确的访问托管对象,如:
Class1 ^c = gcnew Class1();
c->Name = "zzj";
printf("%s/n", c->Name);
其中,Class1 是C#动态库所定义的类。
五、以下几点需要注意
1.在加载C#生成的dll动态库时,不能使用MFC的#include方式,而是采用#using方式来引用C# 的DLL动态库。
2.一般C#都是使用名字空间模式,所以在引用动态库成功后必须使用using namespace ADMessage_test;
3.由于使用的是C++/clr语法,所以应该采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。
网上的Demo网址:http://blog.163.com/xiao_caoo/blog/static/372276662012718113022795/
0 0
- 如何利用MFC编写的.exe调用C#编写的dll动态库
- 如何在MFC中调用C#编写的DLL
- MFC中调用C#编写的DLL
- MFC调用QT编写的DLL动态库
- C#如何调用C++编写的DLL
- C++如何调用C#编写的DLL
- C++如何调用C#编写的DLL
- C#调用C++编写的动态链接库dll文件
- Delphi调用C# 编写dll动态库
- C#动态调用C++编写的DLL函数
- C#动态调用C++编写的DLL函数
- C#动态调用C++编写的DLL函数
- C#动态调用C++编写的DLL函数
- C#动态调用C++编写的DLL函数
- C#动态调用C++编写的DLL函数
- C#动态调用C++编写的DLL函数
- C#中如何调用C++编写的DLL
- C#中如何调用C++编写的DLL
- Spring与Quartz的整合实现定时任务调度
- LDD之调试
- 网络程序的出错检测步骤
- 避免死锁
- cocos2d-x实例学习(11)之CCCatmullRomTo&CCCatmullRomBy
- 如何利用MFC编写的.exe调用C#编写的dll动态库
- 内网渗透中的mimikatz
- ios开发要注意函数是否旧版不支持
- 【sha1的获取】分为debug模式下跟release模式下的不同获取方式
- 鼠标悬浮显示区域坐标
- Attempt to mutate immutable object with appendString
- CSS 预处理器与 CSS 后处理器
- zjnu1762 U (线段树)
- JFinal 设置maxFormContentSize 参数