规则mfc里的接口函数的参数类型使用CString不是说了吗, 对于规则mfc dll的接口参数是CString为什么也可以使用   某个规则 mfc dll 的接口函数的参数类型是CString该dll也正常工作不是说,不可以吗

解决方案 »

  1.   


    那你说,它和 mfc 扩展dll有什么区别?
      

  2.   

    mfc扩展dll用的是MFC自建的一套导入导出机制,在导出MFC类的时候比较方便,你可以用Depends看编译出的DLL,都看不到导出函数的
      

  3.   


    你的意思是mfc 规则dll 也可以导出mfc类了?只不过没有 扩展mfc dll方便?
      

  4.   

    http://download.csdn.net/detail/arpnet99/4933606
      

  5.   


    这个经典文章里就是提到了, 规则dll不能导出mfc的类, 自然也不能接口函数参数为mfc 的类 
      

  6.   


    我不知道你要导出什么MFC类,不过我做的集成自CButton这些的MFC类的页面控件,用规则dll一样的导出,在里面以Shared方式使用MFC就行了。只需要在申明类的时候,申明为__declspec(dllexport),使用时申明为__declspec(dllimport)
      

  7.   

    .DLL 文件的布局与 .exe 文件非常相似,但有一个重要的差异:DLL 文件包含导出表。导出表包含 DLL 导出到其他可执行文件的每个函数的名称。这些函数是 DLL 中的入口点;只有导出表中的函数可由其他可执行文件访问。DLL 中的任何其他函数都是 DLL 私有的。通过使用带 /EXPORTS 选项的 Dumpbin 工具,可以查看 DLL 的导出表。
    有两种从 DLL 导出函数的方法:
    在生成 DLL 时,创建一个模块定义 (.def) 文件并使用该 .def 文件。如果希望按序号而不是按名称从 DLL 导出函数,则请使用此方法。
    在函数的定义中使用 __declspec(dllexport) 关键字。
    用上述任何方法导出函数时,确保使用 __stdcall 调用约定。More detail, please refer to the url listed below:
    http://msdn.microsoft.com/zh-cn/library/z4zxe9k8(v=vs.80).aspx
      

  8.   


    如此说来,那么 规则dll的接口参数或者接口的返回值类型都可以是mfc或者mfc的派生类了我做过实验吧:类型到添加一个mfc的类,基类为CButton,啥都不做, 仅仅用类向导添加一个类继续添加一个(手工),extern "C" _declspec(dllexport) void fun_test8(CString str);
    extern "C" _declspec(dllexport) void fun_test8(CString str)
    {
    str=_T("hello");
    }发现也可以正常使用。我惊奇的发现:我被网上的 2逼文章给误导很久了, 这文章很出名。里面提到过:只有扩展mfc dll才可以: 接口函数或者导出类是与mfc相关的.
    我验证过mfc 扩展dll貌似2者没有什么大的区别。要说区别,在这种应用情景下游区别:
      

  9.   


    写一个函数, 这个函数的功能是:
    弹出一个模式对话框来, 
    对于扩展mfc dll,是不会成功的。我被网上的 2逼文章给误导很久了, 这文章很出名。
     
    里面提到过:只有扩展mfc dll才可以: 接口函数或者导出类是与mfc相关的.