首先,我不知道MFC能不能直接调用C#的dll,我看一些资料说要把dll注册为com组件才行,不明白
然后,按照网上的做法:
一、使用 /clr 编译 MFC 可执行文件或规则 DLL. 1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。
2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。
3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。
4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。
5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。
二、在代码引用需要的dll. #using <mscorlib.dll>. #using "DownloaFiles.dll" //换成需要的dll文件。
using namespace System;
using namespace ADMessage_test;//换成dll中类所使用的namespace. 三、在dll函数调用代码前加入#pragma managed 这是manage和unmanage混合编程在MFC下的一种实现方式。在做完步骤一:一、使用 /clr 编译 MFC 可执行文件或规则 DLL.以后,在运行MFC程序,出现错误:
命令行 error D8016: “/clr”和“/Gm”命令行选项不兼容在release下运行则出现错误:fatal error C1190: 托管目标代码需要“/clr”选项
请问这是怎么回事
然后,按照网上的做法:
一、使用 /clr 编译 MFC 可执行文件或规则 DLL. 1、打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”。
2、展开“配置属性”旁边的节点并选择“常规”。在右侧窗格中的“项目默认值”下,将“公共语言运行库支持”设置为“公共语言运行库支持 (/clr)”。
3、在相同的窗格中,确保将“MFC 的使用”设置为“在共享 DLL 中使用 MFC”。
4、在“配置属性”下,展开“C/C++”旁边的节点并选择“常规”。请确保将“调试信息格式”设置为“程序数据库 /Zi”(而不是“/ZI”)。
5、在“配置属性”下,选择“C/C++”,然后选择“代码生成”。请确保将“运行时库”设置为“多线程调试 DLL (/MDd)”或“多线程 DLL (/MD)”之一。
二、在代码引用需要的dll. #using <mscorlib.dll>. #using "DownloaFiles.dll" //换成需要的dll文件。
using namespace System;
using namespace ADMessage_test;//换成dll中类所使用的namespace. 三、在dll函数调用代码前加入#pragma managed 这是manage和unmanage混合编程在MFC下的一种实现方式。在做完步骤一:一、使用 /clr 编译 MFC 可执行文件或规则 DLL.以后,在运行MFC程序,出现错误:
命令行 error D8016: “/clr”和“/Gm”命令行选项不兼容在release下运行则出现错误:fatal error C1190: 托管目标代码需要“/clr”选项
请问这是怎么回事
不知道c# dll是否是你自己所写,可以在project properties里面找到发布成COM的选项,然后会要你使用强名,在vs cmd里面snk生成一个key,关联到c# dll,然后发布,注册dll,详细方式可以百度c++ 调用c# dll,过程就是我说的这样
但是要注意参数和返回值