我用vc写一个控制台程序,我想把里面主要的逻辑写成dll,现在我遇到几个问题!
1.在控制台程序中已经用obdc连上数据库,并可以处理数据.在dll中也要处理数据库数据,
不知dll的数据库连接是用控制台程序传入呢!还是要在dll中重写数据库连接?
2.假如我dll中写了一个类(其中有很多的自定义函数),我想把类里的其中一个函数(此函数也用到了dll中的其他函数)导出到控制台程序,
不知道怎么写!
3.控制台程序传入到dll有多个参数,可是dll传出到控制台程序只要一个参数,不知这个参数是否可以用那个导出函数直接返回?
我初学vc,希望各位高手指点!谢谢!

解决方案 »

  1.   

    1.在DLL中写新的连接比较好,不然就数据耦合了,以后很麻烦的。
    2.你不如把整个类导出,要么就写多一个导出函数,这个函数里再使用类里面的那个函数。
    3.可以用DLL直接返回啊。
      

  2.   

    导出类之后,在控制台程序中怎么加载啊!
    在dll中返回的变量可以是CString吗?
      

  3.   

    加载可以用动态方式:loadlibrary函数得到DLL模块句柄,然后用GetProcAddress函数得到DLL中函数的地址再调用。最好不要用dll导出CString,很容易出问题,用char*或者其他的都可以
      

  4.   

    我在dll中把要的数据放在一个CString的变量中,在控制台程序中可以直接用吗?
      

  5.   

    class  _declspec(dllexport)  GetCell
    {
    public:
    GetCell();
    virtual ~GetCell();
    public:
    CString CellNo;//返回变量
    _ConnectionPtr m_pConnection;
    bool SelectSql(LPCSTR SqlStr,_RecordsetPtr rs);//查询SQL语句
    bool ExecSql(LPCSTR SqlStr);//执行SQL命令
    bool ConDB();//打开连接
    void Close();//关闭连接
    CString PickCell(long PickCellType,char *artno,char *mcustno);
    CString RecentCell(char *artno,char *mcusnto);
    bool AssignCell(char *artno,char *mcustno,long qustype,double qins,double qpalette);//返回函数
    };
    dll的类是这样定义的,里面的函数也都些好了!请问高手在控制台程序中怎么调用?
      

  6.   

    class AFX_EXT_CALSS classname