均用VC做,想做一个报文解析大win32 dll.然后想在MFC程序中动态调用.但不想象上次项目中那样lib+.h文件方式,现在问题:
1.dll中函数可以导出,
函数如下:
void Parse(F1_COMMAND F1_Command, RESULT *pResult)F1_COMMAND结构体需要在应用程序中填充,当参数传近来,然后返回pResult.怎么能够在应用程序中调用填充F1_COMMAND结构体呢?

解决方案 »

  1.   

    应用程序总要知道F1_COMMAND结构吧,不知道怎么用呢?
      

  2.   

    传递结构体指针采用插件的做法
    可以参考
    http://www.cs dN.com.cn/html/040601/20045255026210235.html
      

  3.   

    看过GetOpenFileName函数吧?参数也是结构体。??
    Parse(F1_COMMAND F1_Command, RESULT *pResult)一般应该是
    Parse(F1_COMMAND* pF1_Command, RESULT *pResult)
    吧。这个定义好像有点问题。
      

  4.   

    需要包含该结构体所在的头文件!如果不想包含头文件,必须在你的程序中定义一个和该结构体相同的结构体,然后使用显式加载DLL的方法调用DLL中的导出函数!
      

  5.   

    To verbigbug()对,俺写错了,应该是
    Parse(F1_COMMAND* pF1_Command, RESULT *pResult)真的非要包含头文件吗?那样dll修改了,还不是要修改主程序,DLL有点失去意义!
      

  6.   

    感谢大虾,在问一个问题,能够调用dll中的类吗?eg. CABC类是在dll中定义的. 其成员函数有Parse(F1_COMMAND* pF1_Command, RESULT *pResult)我在主程序中,能够用 CABC a; a.Parse();吗?还是说要把类也定义在头文件中?
      

  7.   

    可以,传递出一个结构指针就可以,其实你函数的返回值甚至可以是void *,这样传出任何的指针都可以,当然也包括结构指针
      

  8.   

    Tozfive5(醉马不肖): F1_COMMAND 是dll中的结构体
    zhangnanonnet(鱼欢) 能够举个例子吗?
      

  9.   

    gracezhu(eutom)的link传递结构体指针采用插件的做法
    可以参考
    http://www.cs dN.com.cn/html/040601/20045255026210235.html无效
      

  10.   

    可以传递dll中的类,把需要导出的类定义如下:
    class __declspec(dllexport) 类名
    {
    ...
    };然后将这个类的头文件加到主程序中就可以直接进行调用或继承了。
      

  11.   

    也可以做成扩展DLL,直接就能用类了。