在程序中 adefview.cpp 加入一 OLEDB 數據庫操作類頭文件 #include "DOperateA.h" 編譯出錯:ADEFVIEW.obj : error LNK2005: "struct tagDBID const DBCOLUMN_SS_TDSCOLLATION" (?DBCOLUMN_SS_TDSCOLLATION@@3UtagDBID@@B) already defined in DOperateA.obj
ADEFVIEW.obj : error LNK2005: "struct tagDBID const DBCOLUMN_BASETABLEINSTANCE" (?DBCOLUMN_BASETABLEINSTANCE@@3UtagDBID@@B) already defined in DOperateA.obj
DOperateA.obj : error LNK2005: "struct _GUID const CLSID_SQLOLEDB" (?CLSID_SQLOLEDB@@3U_GUID@@B) already defined in ADEFVIEW.obj
Debug/PASE.exe : fatal error LNK1169: one or more multiply defined symbols found
不加之前程序不會出錯(現我只加個頭文件沒有做其它任何定義和操作)DOperateA.h 的內容如下:
#ifndef UNICODE
#define UNICODE
#endif#ifndef _UNICODE
#define _UNICODE
#endif#ifndef DBINITCONSTANTS
#define DBINITCONSTANTS
#endif#ifndef INITGUID
#define INITGUID
#endif#include <stdio.h>
#include <tchar.h>#include <stddef.h>
#include <windows.h>
#include <iostream.h>#include <oledb.h>
#include <SQLOLEDB.h>
#include <oledberr.h>
#include "variablestruct.h"class CDOperateA
{
public:
CDOperateA();
protected:
virtual ~CDOperateA();
BOOL GetRowData(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo,BYTE *pDataBuffer,int bHead);
BOOL SetRowData(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo,BYTE *pDataBuffer);
BOOL GetRowClassId(BYTE *pDataBuffer,int *ClassId);
BOOL GetRowClassName(BYTE *pDataBuffer,CString *ClassName);
void WriteLog(int level,CString str);
private:IDBInitialize* pIDBInitialize;
IDBCreateSession* pIDBCreateSession;
IDBCreateCommand* pIDBCreateCommand;
ICommandText* pICommandText;
IRowset* pIRowset;
IRowsetScroll* pIRowsetScroll;
IRowsetUpdate* pIRowsetUpdate;
IRowsetFind* pIRowsetFind;
IAccessor* pIAccessor;
HACCESSOR hAccessor;
DBCOLUMNINFO* pDBColumnInfo;
DBBINDING* pBindings;
HROW hRows[1];
HROW* pRows ;
ULONG DataBufOffset;
ULONG RecordCount;
ULONG GetRows;
ULONG Books;
int Cols;
int ClassId;
int iseof;
int isbof;public:
BOOL InitDataBase(LPCTSTR Sname,LPCTSTR DBname,LPCTSTR Uname,LPCTSTR Upwd);
BOOL InsertAclass(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo);
BOOL LoadAclass();//(select * from where ) add this key and it's value
BOOL Findclass(LPCTSTR strKey,LPCTSTR strValue);
//need IID_IRowsetScroll
BOOL Getclass(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo);//need IID_IRowsetScroll
BOOL MoveNext();//need IID_IRowsetScroll
BOOL MovePrev();//need IID_IRowsetScroll
BOOL DeleteAclass(LPCTSTR strKey,LPCTSTR strValue);//need IID_IRowsetUpdate
BOOL UpdateAclass(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo);//need IID_IRowsetUpdate
BOOL UnInitDataBase();
BOOL SaveClass(ULONG Rows, HROW *pHRow);//need IID_IRowsetUpdate
}
;
ADEFVIEW.obj : error LNK2005: "struct tagDBID const DBCOLUMN_BASETABLEINSTANCE" (?DBCOLUMN_BASETABLEINSTANCE@@3UtagDBID@@B) already defined in DOperateA.obj
DOperateA.obj : error LNK2005: "struct _GUID const CLSID_SQLOLEDB" (?CLSID_SQLOLEDB@@3U_GUID@@B) already defined in ADEFVIEW.obj
Debug/PASE.exe : fatal error LNK1169: one or more multiply defined symbols found
不加之前程序不會出錯(現我只加個頭文件沒有做其它任何定義和操作)DOperateA.h 的內容如下:
#ifndef UNICODE
#define UNICODE
#endif#ifndef _UNICODE
#define _UNICODE
#endif#ifndef DBINITCONSTANTS
#define DBINITCONSTANTS
#endif#ifndef INITGUID
#define INITGUID
#endif#include <stdio.h>
#include <tchar.h>#include <stddef.h>
#include <windows.h>
#include <iostream.h>#include <oledb.h>
#include <SQLOLEDB.h>
#include <oledberr.h>
#include "variablestruct.h"class CDOperateA
{
public:
CDOperateA();
protected:
virtual ~CDOperateA();
BOOL GetRowData(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo,BYTE *pDataBuffer,int bHead);
BOOL SetRowData(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo,BYTE *pDataBuffer);
BOOL GetRowClassId(BYTE *pDataBuffer,int *ClassId);
BOOL GetRowClassName(BYTE *pDataBuffer,CString *ClassName);
void WriteLog(int level,CString str);
private:IDBInitialize* pIDBInitialize;
IDBCreateSession* pIDBCreateSession;
IDBCreateCommand* pIDBCreateCommand;
ICommandText* pICommandText;
IRowset* pIRowset;
IRowsetScroll* pIRowsetScroll;
IRowsetUpdate* pIRowsetUpdate;
IRowsetFind* pIRowsetFind;
IAccessor* pIAccessor;
HACCESSOR hAccessor;
DBCOLUMNINFO* pDBColumnInfo;
DBBINDING* pBindings;
HROW hRows[1];
HROW* pRows ;
ULONG DataBufOffset;
ULONG RecordCount;
ULONG GetRows;
ULONG Books;
int Cols;
int ClassId;
int iseof;
int isbof;public:
BOOL InitDataBase(LPCTSTR Sname,LPCTSTR DBname,LPCTSTR Uname,LPCTSTR Upwd);
BOOL InsertAclass(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo);
BOOL LoadAclass();//(select * from where ) add this key and it's value
BOOL Findclass(LPCTSTR strKey,LPCTSTR strValue);
//need IID_IRowsetScroll
BOOL Getclass(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo);//need IID_IRowsetScroll
BOOL MoveNext();//need IID_IRowsetScroll
BOOL MovePrev();//need IID_IRowsetScroll
BOOL DeleteAclass(LPCTSTR strKey,LPCTSTR strValue);//need IID_IRowsetUpdate
BOOL UpdateAclass(ClassSubInfo *pInfo,ClassOtherInfo *pOtherInfo);//need IID_IRowsetUpdate
BOOL UnInitDataBase();
BOOL SaveClass(ULONG Rows, HROW *pHRow);//need IID_IRowsetUpdate
}
;
解决方案 »
- 如何将别人代码中的的一些新功能整合到自己的程序中
- 关于“内存映射文件”讨论
- 如何在打开程序时同时打开两个子窗口?
- 大家帮我看看这段关于托盘的程序,行吗??
- 在一绘图程序中怎样将bmp、jpg或gif的图片设置为背景
- 我想把CEdit对象里的字符串按一定格式导出到word文件,请大家给一点思路。
- 局域网监控系统的几个问题急求解答?谢谢
- 如何确定局域网上的驱动器类型(Harddisk CDROM Floppy) When I use GetDriveType("\\\\name\\C:"),It's not work
- 求助:向各位大哥请教个 hook 问题,谢谢!
- 我用SerialPort类写了一个串口接收数据的小程序,数据无法实时更新,求帮助
- 类似xp中计算器的界面是怎么创建的?
- 大家帮忙看看这一句程序,很简单但是很奇怪
project->settings ->tab:link ->category:customize->钩选force file output
试试
VC7相应设置
不知道行不行,没试过做数据库的
PASE.exe - 0 error(s), 71 warning(s)但這樣會不會不安全???
為什麼會 已經定義過???
#define __DOPERATEA_H__
我去掉
#include <stdio.h>
#include <tchar.h>
#include <stddef.h>
#include <windows.h>
#include <iostream.h>只有以下的頭文件
#include <oledb.h>
#include <SQLOLEDB.h>
#include <oledberr.h>
#include "variablestruct.h"
別的頭文件沒有用
#include <oledb.h>
#include <SQLOLEDB.h>
#include <oledberr.h>
還是出錯!怎麼會出現 struct tagDBID const DBCOLUMN_SS_TDSCOLLATION 重定義呢???DOperateA.obj : error LNK2005: "struct tagDBID const DBCOLUMN_SS_TDSCOLLATION" (?DBCOLUMN_SS_TDSCOLLATION@@3UtagDBID@@B) already defined in ADEFVIEW.obj
位置要放对??? 有沒有建議的順序?
謝謝 !!!
DOperateA.obj : error LNK2001: unresolved external symbol "struct _GUID const CLSID_SQLOLEDB" (?CLSID_SQLOLEDB@@3U_GUID@@B)
Debug/PASE.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...PASE.exe - 2 error(s), 0 warning(s)