我写了一个WIN32 的DLL,不共巷MFC,如下是导出类的写法
class __declspec(dllexport) CExchange 
{
public:
_ConnectionPtr m_ConnectDatabase;
//初始化数据库的基本配置
//进行内存分配和数据库连接以及设置导入的表名
BOOL InitConfig(LPCTSTR lpszFileName, LPCTSTR lpszServer, LPCTSTR lpszUser,
LPCTSTR lpszPwd, LPCTSTR lpszDatabase, LPCTSTR lpszClassDatabase, LPCTSTR lpszTableName);


//释放内存
BOOL ReleaseConfig();
CExchange();
private:
BOOL InitDatabase(LPCTSTR bstServer, LPCTSTR bstUser, LPCTSTR bstPwd, LPCTSTR bstDatabase, LPCTSTR szRecordClass);
BOOL GetFieldNameFromDatabase(TCHAR szName[], TCHAR szFieldNum[]);
private:
_bstr_t m_bstTableName;
BOOL CreateSqlTable(FIELDINFO *pFieldInfo, int nFieldCount);
void ModifyFieldEnd(FIELDINFO *pFieldInfo, int nFieldNum);
BOOL InsertField(FIELDINFO *pFielOrg, FIELDINFO *pFieldNew, int *pFieldCount, int nFieldNum);
BOOL CreateFieldName(FIELDINFO *pFieldInfo, FIELDINFO *pField, int nFieldCount, int pos);
BOOL ModifyFieldName(FIELDINFO *pFieldInfo, TCHAR szName[], TCHAR szOrgName[], int nCount);
BOOL IsExistField(FIELDINFO *pFieldOrg, TCHAR szFieldName[], int nFieldCount);
void DelMulFileld(FIELDINFO  *pFieldInfo, int nFieldNum);
_ConnectionPtr m_cnRecordClass; int m_nFileLen;
TCHAR *m_pMemory;
HANDLE m_hFile;
int m_nCurPos;
};编译后有几个警告,做如下提示
:\2002\convertdll\exchange.h(23) : warning C4251: 'm_ConnectDatabase' : class '_com_ptr_t<class _com_IIID<struct _Connection,&struct __s_GUID  _GUID_00000550_0000_0010_8000_00aa006d2ea4> >' needs to have dll-interface to be used by clients of class
 'CExchange'
d:\2002\convertdll\exchange.h(42) : warning C4251: 'm_bstTableName' : class '_bstr_t' needs to have dll-interface to be used by clients of class 'CExchange'
        d:\program files\microsoft visual studio\vc98\include\comutil.h(72) : see declaration of '_bstr_t'
d:\2002\convertdll\exchange.h(50) : warning C4251: 'm_cnRecordClass' : class '_com_ptr_t<class _com_IIID<struct _Connection,&struct __s_GUID  _GUID_00000550_0000_0010_8000_00aa006d2ea4> >' needs to have dll-interface to be used by clients of class '
CExchange'
这个我不知道怎么解决,如果不能解决,会有大问题吗?

解决方案 »

  1.   

    http://www.csdn.net/develop/Read_Article.asp?Id=20024
      

  2.   

    导出类的定义是这样:
    Class AFX_EXT_CLASS CTest
    {
    }编译时,假如编译选项:_AFXEXT
      

  3.   

    赫赫你给的分数低
    在你的DLL中Alt+F7中有一个C/C++中preprocessor definitions编辑框添加AAA_EXPORTS定义,然后在头文件类定义之前添加
    #ifdef AAA_EXPORTS
    #define AAA_API __declspec(dllexport)
    #else
    #define AAA_API __declspec(dllimport)
    #endif
    然后在你的类的声明前添加AAA_API ,就象上面一样,在主工程中包括这个头文件,主工程中在ALT+F7的LINK选项卡(应该是这个选项卡,我这没环境)添加该DLL的.LIB文件。OK
    http://expert.csdn.net/Expert/topic/2442/2442418.xml?temp=.8923914
      

  4.   

    bluebohe(薄荷)过来取分
    http://expert.csdn.net/Expert/topic/2476/2476967.xml?temp=.9983942