首先,我不知道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”选项
请问这是怎么回事

解决方案 »

  1.   

    你这种方式我没有试过,不过注册成com我到用过很多次
    不知道c# dll是否是你自己所写,可以在project properties里面找到发布成COM的选项,然后会要你使用强名,在vs cmd里面snk生成一个key,关联到c# dll,然后发布,注册dll,详细方式可以百度c++ 调用c# dll,过程就是我说的这样
      

  2.   

    http://download.csdn.net/source/217197
      

  3.   

    dll都通用的,至少在windows下面,无论什么语言写的都可以调用
    但是要注意参数和返回值
      

  4.   

    DLL原则上说是可以被其他语言调用的,看不出问题。