symbian UIQ (CContactDatabase) 操作数据库问题

goodbyealone 2007-12-10 12:43:28
我在网上看了很多教程都说直接
// Open the default contacts database:
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);
..........
我也包含了ctndb.h这个头文件
为什么我在cpp文件中用 CContactDatabase* contactsDb = CContactDatabase::OpenL(); 会出现如下错误
STREAMS.obj : error LNK2001: unresolved external symbol "public: static class CContactDatabase * __cdecl CContactDatabase::OpenL(enum CContactDatabase::TThreadAccess)" (?OpenL@CContactDatabase@@SAPAV1@W4TThreadAccess@1@@Z)

根本就不能这样子直接用啊

请各位大哥指点下啊~困扰我几天几夜了~小弟弟感激不尽!
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanleichicheng 2011-03-23
  • 打赏
  • 举报
回复
我跟楼主的情况一样,现在也是很郁闷呀。求大虾出山指点……
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
接分先!
dyw 2007-12-11
  • 打赏
  • 举报
回复
确认使用命令行编译是否有问题。
goodbyealone 2007-12-11
  • 打赏
  • 举报
回复
上面的大哥~我加了的啊还是不行的
在cntdb.h头文件里是这样对openL定议的
.
.
.
enum TThreadAccess {ESingleThread,EMultiThread};
enum TSortDataSource
{
ENoOrder,
EUsesIdentityTableOnly,
EUsesAllTables
};
public:
IMPORT_C static CContactDatabase* OpenL(TThreadAccess aAccess=ESingleThread);


IMPORT_C static CContactDatabase* OpenL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
.
.
.
.
我在streams.cpp里是这样访问那个成员函数openL的
// streams.cpp
//
// Copyright (c) 2000 Symbian Ltd. All rights reserved.
//

#include "streams.h"

#include <eikenv.h>
#include <eikon.rsg>
#include <eikdialg.h>
#include <eikedwin.h>
#include <e32def.h >
#include <s32file.h>


#include <cntdef.h>

#include <cntitem.h>
#include <cntfldst.h>


#include <cntdb.h>
#include<d32dbms.h>
#include<f32file.h >
#include<s32file.h>


#include <e32base.h>


#include <cntdbobs.h>
#include <cntsync.h>

#include <badesca.h>
#include <versit.h>
#include <collate.h>



CContactDatabase* dfg=CContactDatabase::OpenL();
...............................
这样访问它就一定会报如下错误
--------------------Configuration: STREAMS - Win32 Uni Debug--------------------
Compiling...
Streams.cpp
Doing first-stage link by name
link.exe @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nma04072.
Creating library \Symbian\UIQ_21\EPOC32\BUILD\SYMBIAN\UIQ_21\UIQEXAMPLES\PAPERS\PEP\STREAMS\STREAMS\WINS\UDEB\STREAMS.lib and object \Symbian\UIQ_21\EPOC32\BUILD\SYMBIAN\UIQ_21\UIQEXAMPLES\PAPERS\PEP\STREAMS\STREAMS\WINS\UDEB\STREAMS.exp
STREAMS.obj : error LNK2001: unresolved external symbol "public: static class CContactDatabase * __cdecl CContactDatabase::OpenL(enum CContactDatabase::TThreadAccess)" (?OpenL@CContactDatabase@@SAPAV1@W4TThreadAccess@1@@Z)
\Symbian\UIQ_21\EPOC32\BUILD\SYMBIAN\UIQ_21\UIQEXAMPLES\PAPERS\PEP\STREAMS\STREAMS\WINS\UDEB\STREAMS.APP : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
Stop.
if exist "\Symbian\UIQ_21\EPOC32\BUILD\SYMBIAN\UIQ_21\UIQEXAMPLES\PAPERS\PEP\STREAMS\STREAMS\WINS\UDEB\STREAMS.exp" del "\Symbian\UIQ_21\EPOC32\BUILD\SYMBIAN\UIQ_21\UIQEXAMPLES\PAPERS\PEP\STREAMS\STREAMS\WINS\UDEB\STREAMS.exp"
Stopped the build by removing the export object,
if present, because the pre-link stage failed
Linking...
LINK : fatal error LNK1104: cannot open file "\Symbian\UIQ_21\EPOC32\BUILD\SYMBIAN\UIQ_21\UIQEXAMPLES\PAPERS\PEP\STREAMS\STREAMS\WINS\UDEB\STREAMS.exp"
Error executing link.exe.

STREAMS.APP - 4 error(s), 0 warning(s)

根据那个成员函数的定议这样子访问是不是错误的啊~
大哥们帮帮我把~这几天为这一个问题苦恼~郁闷死我了
最后再说明一点 我是在索爱下载的UIQ2.1的sdk 在VC环境下编译
goodbyealone 2007-12-11
  • 打赏
  • 举报
回复
在UIQ SDK下有个EXAMPLE叫streams(C:\Symbian\UIQ_21\UIQExamples\papers\pep\streams),我是先在命令行中编绎好了streams后(生成了streams.dsw工程文件)再加那些东西进去的啊
直接在streams.cpp里 加了头文件
#include <cntdb.h>

加了库文件

在mmp文件加上了
LIBARAY cntmodel.lib

然后我就直接在VC环境下编译了啊,没有再用命令行再去编译什么了

goodbyealone 2007-12-10
  • 打赏
  • 举报
回复
对了~说明一下我的SDK是在索爱下载的 uiq2.1 sdk 我是在vc平台下编写的!
goodbyealone 2007-12-10
  • 打赏
  • 举报
回复
对了~说明一下我的SDK是在索爱下载的 uiq2.1 sdk 我是在vc平台下编写的!
anel 2007-12-10
  • 打赏
  • 举报
回复
在mmp文件加上
LIBARAY cntmodel.lib

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧