当前位置:编程学习 > wap >>

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

我在网上看了很多教程都说直接
// 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)

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

请各位大哥指点下啊~困扰我几天几夜了~小弟弟感激不尽!
--------------------编程问答-------------------- 对了~说明一下我的SDK是在索爱下载的 uiq2.1 sdk 我是在vc平台下编写的! --------------------编程问答-------------------- 对了~说明一下我的SDK是在索爱下载的 uiq2.1 sdk 我是在vc平台下编写的! --------------------编程问答-------------------- 在mmp文件加上
LIBARAY cntmodel.lib --------------------编程问答-------------------- 上面的大哥~我加了的啊还是不行的 
在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环境下编译
--------------------编程问答-------------------- 确认使用命令行编译是否有问题。 --------------------编程问答-------------------- 在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环境下编译了啊,没有再用命令行再去编译什么了

--------------------编程问答-------------------- 接分先! --------------------编程问答-------------------- 我跟楼主的情况一样,现在也是很郁闷呀。求大虾出山指点……
补充:移动开发 ,  Symbian
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,