16,467
社区成员
发帖
与我相关
我的任务
分享
// DataBaseProcess.h
#pragma once
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")
class CDataBaseProcess
{
public:
CDataBaseProcess(void);
~CDataBaseProcess(void);
protected:
_ConnectionPtr m_pConnection;
BOOL m_bSuccessCreateInstanceForConnect;
BOOL m_bSuccessCreateConnect;
CString m_sConnection;
public:
BOOL InitializeComForADO(void);
void UninitializeFromADO(void);
void SetConnectString(const CString& sConnection);
inline BOOL ConnectToDB(void);// 这里去掉inline后编译就通过了,但是不去会报这样的错误:
//LINK : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
//MainFrm.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall CDataBaseProcess::ConnectToDB(void)" (?ConnectToDB@CDataBaseProcess@@QAEHXZ) ,该符号在函数 "protected: int __thiscall CMainFrame::OnCreate(struct tagCREATESTRUCTA *)" (?OnCreate@CMainFrame@@IAEHPAUtagCREATESTRUCTA@@@Z) 中被引用
//.\..\\bin/NetworkDataTrans.exe : fatal error LNK1120: 1 个无法解析的外部命令
inline BOOL DisconnectDB(void);// 这里加上inline没问题
};
//MainFrm.h
#include "DataBaseProcess.h"
class CMainFrame : public CFrameWnd
{
//...
public:
CDataBaseProcess m_cDBP;
};
//MainFrm.cpp
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//...
m_cDBP.DisconnectDB();
m_cDBP.ConnectToDB();// 这里
}
class CDataBaseProcess
{
public:
CDataBaseProcess(void);
~CDataBaseProcess(void);
protected:
_ConnectionPtr m_pConnection;
BOOL m_bSuccessCreateInstanceForConnect;
BOOL m_bSuccessCreateConnect;
CString m_sConnection;
public:
BOOL InitializeComForADO(void);
void UninitializeFromADO(void);
void SetConnectString(const CString& sConnection);
inline BOOL ConnectToDB(void)
{
// 把CDataBaseProcess::ConnectToDB中的代码移到这里,不要再定义CDataBaseProcess::ConnectToDB了。
}
inline BOOL DisconnectDB(void)
{
// 把CDataBaseProcess::DisconnectDB中的代码移到这里,不要再定义CDataBaseProcess::DisconnectDB了。
}
};