开发一个软件,由不同的功能模块组成,想把每个模块做成一个动态链接库,刚处于入门阶段,请大家给点建议

解决方案 »

  1.   

    恩 可行,DLL中导出模块接口就行了。
      

  2.   

    http://www.programfan.com/blog/article.asp?id=30822
      

  3.   

    把主框架指针等用LPVOID等作为dll参数传递,然后在dll函数中调用
      

  4.   

    谢谢各位的帮忙。现在我会了利用回调函数在DLL中调用主框架的函数,所以DLL与主框架交互的入口和出口问题我已经解决了,还剩下最后一个问题了:在DLL中需要用数据库连接去调用存储过程,需要用到在主框架中实例化的数据库连接,该怎么调用主框架的数据库连接啊?
      

  5.   

    可以把连接数据库放到DLL中
    或者你DLL的回调等来调用主框架的数据库操作等
      

  6.   

    一方面因为我要对DLL进行频繁的访问交互,而且由许多个DLL都要与数据库进行交互,所以觉得把数据库的连接放到DLL里不好;
    另一方面如果我把调用存储过程的代码写在主框架中的话,主框架将会非常的臃肿,所以还是想把它放在DLL中;
    我考虑到一种方案,不知是否可行:
    在DLL中加入#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")
    这样我就可以在DLL中定义一个_ConnectionPtr m_pConnection变量了,然后我通过DLL的接口函数将主框架中建立好的连接传给我DLL中定义的这个连接,不知道是否可行?谢谢
      

  7.   

    可以的,我试过了,不过DLL中要这么加:
    #pragma warning(disable:4146) 
    #import "C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF") 
    #pragma warning(default:4146) 
    using namespace ADODB;
    而不能只加:
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")