⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_61114.htm

📁 vc
💻 HTM
字号:
<p>
序号:61114 发表者:syncmaster 发表日期:2003-11-17 21:26:18
<br>主题:这是个问题吗?
<br>内容:我自己定义了头文件,出现了link 的错误,说我头文件里面定义的类的一些成员函数已经包含在*.obj文件中,什么重复定义之类的<BR>我要真理!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2003-11-17 21:30:54
<br>内容:先rebuild all试试。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:redleaf 回复日期:2003-11-17 21:34:18
<br>内容:在你的头文件中加入<BR>#pragma once
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 21:38:49
<br>内容:RWExcelDlg.obj : error LNK2005: &#34;public: __thiscall CExcel::CExcel(class CString)&#34; (??0CExcel@@QAE@VCString@@@Z) already defined in RWExcel.obj<BR>RWExcelDlg.obj : error LNK2005: &#34;public: class CString&nbsp;&nbsp;__thiscall CExcel::GetExcelDriver(void)&#34; (?GetExcelDriver@CExcel@@QAE?AVCString@@XZ) already defined in RWExcel.obj<BR>RWExcelDlg.obj : error LNK2005: &#34;public: void __thiscall CExcel::Inquire(class CString)&#34; (?Inquire@CExcel@@QAEXVCString@@@Z) already defined in RWExcel.obj<BR>RWExcelDlg.obj : error LNK2005: &#34;public: void __thiscall CExcel::Display(class CListCtrl *)&#34; (?Display@CExcel@@QAEXPAVCListCtrl@@@Z) already defined in RWExcel.obj<BR>RWExcelDlg.obj : error LNK2005: &#34;public: __thiscall CExcel::~CExcel(void)&#34; (??1CExcel@@QAE@XZ) already defined in RWExcel.obj<BR>RWExcelDlg.obj : error LNK2005: &#34;public: void __thiscall CExcel::Create(class CString)&#34; (?Create@CExcel@@QAEXVCString@@@Z) already defined in RWExcel.obj<BR>Debug/RWExcel.exe : fatal error LNK1169: one or more multiply defined symbols found<BR>Error executing link.exe.<BR><BR>RWExcel.exe - 7 error(s), 0 warning(s)<BR>还是这些,到底编写一个头文件需要什么限制<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 21:40:39
<br>内容:另外我的头文件的格式如下:<BR><BR>#ifndef EXCEL_H<BR>#define EXCEL_H<BR>#pragma once<BR>//<BR>class aa<BR>{<BR>&nbsp;&nbsp; .....<BR>};<BR>///类中的函数定义<BR>...<BR>...<BR>..<BR>#endif<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 21:44:23
<br>内容:解决了,是因为重复包含的缘故,后来,我把需要包含头文件的地方用<BR>class aa;代替,就好了<BR>谢谢大家
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 21:49:16
<br>内容:接着问:<BR>我创建一个CRecordset对象:CRecordset set;<BR>接着创建一个CDatabase对象 data;<BR>......<BR>我想把set和data关联起来,但是这个时候非要出现一个对话框选择数据库<BR>怎么样用程序方法把他们连起来,而不是需要从对话框中选择<BR>(我知道可以用CRecordset set(&amp;data))<BR>可是,set是我的一个类的成员变量,不能这样声明定义<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-11-17 22:02:00
<br>内容:CDatabase data;<BR>//data的open处理<BR><BR>CRecordset rs;<BR>rs.m_pDatabase=&amp;data;<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 22:07:53
<br>内容:我是这样做的,可是不行,对了,刚才那个头文件又出问题了<BR>a.h, b.h , b.cpp<BR>我在b.h中定义了a.h声明的类 a m_a;<BR>所以我需要在a.h中加入#include &#34;a.h&#34;<BR>同时b.cpp中肯定是有#include &#34;b.h&#34;的,所以这个时候又出现了重复定义的错误,怎么回事呀
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 22:09:32
<br>内容:对了,说一句题外话,我都想拜wjb为师了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-11-17 22:14:30
<br>内容:rs.m_pDatabase=&amp;data;<BR>这样设置是没有问题的。俺试验过了。<BR><BR>不行,是否仍然出现对话框?<BR>如果是,那是给的参数不够,需要你在对话框中输入。<BR>给一个完整的例子:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CDatabase db;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString dsn=&#34;ODBC;Driver=SQL Server;Server=192.166.3.9;DATABASE=sode_bj;UID=sa;PWD=mapper&#34;;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!db.Open(NULL,FALSE,FALSE,dsn))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;FALSE&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;SUCCESSED&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CRecordset rs;<BR>&nbsp;&nbsp;&nbsp;&nbsp;rs.m_pDatabase=&amp;db;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;rs.Open(CRecordset::forwardOnly,&#34;select * from sode_memo&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString s;<BR>&nbsp;&nbsp;&nbsp;&nbsp;short i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;i=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDBVariant dbValue;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;rs.GetFieldValue(&#34;stacode&#34;,dbValue);<BR>&nbsp;&nbsp;&nbsp;&nbsp;s=*dbValue.m_pstring;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(s);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;rs.GetFieldValue(&#34;datacode&#34;,dbValue);<BR>&nbsp;&nbsp;&nbsp;&nbsp;s=*dbValue.m_pstring;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(s);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;rs.GetFieldValue(&#34;memo&#34;,dbValue);<BR>&nbsp;&nbsp;&nbsp;&nbsp;s=*dbValue.m_pstring;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(s);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 22:23:34
<br>内容:还是不行,我的代码在下面<BR>CExcel::CExcel(CString excelFilePath)<BR>{&nbsp;&nbsp; m_excelFilePath=excelFilePath;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//检查有没有Excel的驱动<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString sSql;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_sDriver = GetExcelDriver();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m_sDriver.IsEmpty())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 没有发现Excel驱动<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;没有安装Excel驱动!&#34;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化m_sDsn<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_sDsn.Format(&#34;ODBC;DRIVER={%s};DSN='';DBQ=%s&#34;, m_sDriver, &amp;excelFilePath);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 打开数据库(既Excel文件)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sSql.Format(&#34;DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\&#34;%s\&#34;;DBQ=%s&#34;,m_sDriver, m_excelFilePath, m_excelFilePath);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_database.OpenEx(sSql,CDatabase::noOdbcDialog);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_recset.m_pDatabase=&amp;m_database;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CATCH(CDBException, e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 数据库操作产生异常时...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;数据库错误: &#34; + e-&gt;m_strError);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END_CATCH;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 22:27:55
<br>内容:奇怪,重新编译了一下,又好了,不好意思,对了,那个头文件的问题到底怎么解决呢<BR>a.h, b.h , b.cpp<BR>我在b.h中定义了a.h声明的类 a m_a;<BR>所以我需要在a.h中加入#include &#34;a.h&#34;<BR>同时b.cpp中肯定是有#include &#34;b.h&#34;的,所以这个时候又出现了重复定义的错误,怎么回事呀 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-11-17 22:30:53
<br>内容:能否把工程文件传上来。<BR>靠猜测可能很难解决。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 22:37:10
<br>内容:程序代码来了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-17 22:42:00
<br>内容:来了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-11-18 08:54:38
<br>内容:问题出在excel.h上。<BR>按照vc的标准重新建立了这个类。文件名excel1.h/cpp<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-11-18 12:08:40
<br>内容:vc的这方面的标准在哪里可以找到,我想知道究竟是怎么回事
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:wjb 回复日期:2003-11-18 12:48:03
<br>内容:误会<BR>俺说的是标准的方法<BR><BR>实际上是有很多的宏控制命令写的不标准,vc处理不好<BR><BR>如果建立自己的类,最好使用vc生成框架,可以避免麻烦<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -