首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Symbian >

undefined reference to异常怎么解决

2012-01-28 
undefined reference to错误如何解决想写一个在后台监视短信的exe程序,MyStart.cpp#includee32base.h#in

undefined reference to错误如何解决
想写一个在后台监视短信的exe程序,
MyStart.cpp

#include   <e32base.h>
#include   <e32std.h>
#include   <e32cons.h>                         //   Console
#include   "MyObserver.h "

_LIT(KTextConsoleTitle,   "Console ");
_LIT(KTextFailed,   "   failed,   leave   code   =   %d ");
_LIT(KTextPressAnyKey,   "   [press   any   key]\n ");

LOCAL_D   CConsoleBase*   console;     //   write   all   messages   to   this

LOCAL_C   void   DoStartL()
        {
        //   Create   active   scheduler   (to   run   active   objects)
        CActiveScheduler*   scheduler   =   new   (ELeave)   CActiveScheduler();
        CleanupStack::PushL(scheduler);
        CActiveScheduler::Install(scheduler);

        CMyObserver*   observer   =   CMyObserver::NewL(*console);
        observer-> Load();
        //CActiveScheduler::Start();
        //   Delete   active   scheduler
        CleanupStack::PopAndDestroy(scheduler);
        }

GLDEF_C   TInt   Start()
        {
        //   Create   cleanup   stack
        __UHEAP_MARK;
        CTrapCleanup*   cleanup   =   CTrapCleanup::New();

        //   Create   output   console
        TRAPD(createError,   console   =   Console::NewL(KTextConsoleTitle,   TSize(KConsFullScreen,KConsFullScreen)));
        if   (createError)
                return   createError;

        //   Run   application   code   inside   TRAP   harness,   wait   keypress   when   terminated
        TRAPD(mainError,   DoStartL());
        if   (mainError)
                console-> Printf(KTextFailed,   mainError);
        console-> Printf(KTextPressAnyKey);
        console-> Getch();
       
        delete   console;
        delete   cleanup;
        __UHEAP_MARKEND;
        return   KErrNone;
        }


//     Exported   Functions

#ifdef   __WINS__
EXPORT_C   TInt   WinsMain(TAny*   /*aParam*/)
        {
        return   Start();
        }
#else
GLDEF_C   TInt   E32Main()
        {
        return   Start();
        }
#endif

#ifdef   __WINS__
TInt   E32Dll(TDllReason   /*aReason*/)
        {


        return   KErrNone;
        }
#endif


//   End   of   file

MyObserver.h
#ifndef   MYOBSERVER_H
#define   MYOBSERVER_H

//   INCLUDES
//   System   Includes
#include   <e32base.h>     //   CBase,   link   against   euser.lib
#include   <s32std.h>
#include   <msvapi.h>

//   FORWARD   DECLARATIONS
//class   MyClass;
class   CConsoleBase;

//   CLASS   DECLARATION

class   CMyObserver   :   public   CBase,   public   MMsvSessionObserver
        {
        public:   //   Constructors   and   destructor
                static   CMyObserver*   NewL(CConsoleBase&   aConsole);
                static   CMyObserver*   NewLC(CConsoleBase&   aConsole);
                virtual   ~CMyObserver();

        public:   //   Functions   from   base   classes
                void   HandleSessionEventL(   TMsvSessionEvent   aEvent,   TAny*   aArg1,   TAny*   aArg2,   TAny*   aArg3   );
void   Load();
        private:   //   Constructors
                CMyObserver(CConsoleBase&   aConsole);
                void   ConstructL();

        private:   //   Data
                CMsvSession*   iMsvSession;
CMsvEntry*   iMsvEntry;
CConsoleBase&   iConsole;
TMsvId   iNewMessageId;
        };

#endif   //   MYOBSERVER_H

MyObserver.cpp
#include   "MyObserver.h "

//   System   includes
#include   <e32cons.h>
#include   <s32file.h>
#include   <e32base.h>     //   For   CBase,   link   against   euser.lib
#include   <msvids.h>
#include   <msvapi.h>

//#include   <ResourceFile.rsg>
//   User   includes
//#include   "MyHeaderFile.h "

#ifdef   __WINS__
const   TMsvId   KObservedFolderId   =   KMsvDraftEntryId;
#else
const   TMsvId   KObservedFolderId   =   KMsvGlobalInBoxIndexEntryId;
#endif

//   =================   MEMBER   FUNCTIONS   =======================

CMyObserver::CMyObserver(CConsoleBase&   aConsole)   :
iConsole(aConsole)
{
}

CMyObserver::~CMyObserver()
{
delete   iMsvSession;
delete   iMsvEntry;
}

CMyObserver*   CMyObserver::NewLC(CConsoleBase&   aConsole)
{
CMyObserver*   self   =   new   (ELeave)   CMyObserver(aConsole);
CleanupStack::PushL(self);
self-> ConstructL();
return   self;
}

CMyObserver*   CMyObserver::NewL(CConsoleBase&   aConsole)
{
CMyObserver*   self   =   CMyObserver::NewLC(aConsole);


CleanupStack::Pop(self);
return   self;
}

void   CMyObserver::ConstructL()
{
iMsvSession   =   CMsvSession::OpenAsyncL(*this);
}

void   CMyObserver::Load()
{
}

void   CMyObserver::HandleSessionEventL(TMsvSessionEvent   aEvent,   TAny*   aArg1,   TAny*   aArg2,   TAny*   /*aArg3*/)
        {
        }

armi   urel   的时候出现如下错误,还望各位帮帮忙啊
..\..\..\..\EPOC32\BUILD\SYMBIAN\8.1A\S60_2ND_FP3\SERIES60EX\DATASF\MYSTART\GROUP\MYSTART\ARMI\UREL\MYSTART.in(../../../../EPOC32/BUILD/SYMBIAN/8.1A/S60_2ND_FP3/SERIES60EX/DATASF/MYSTART/GROUP/MYSTART/ARMI/UREL/MYOBSERVER.o)(.text+0x11c):Myobserver.cpp:   undefined   reference   to   `CMsvSession::OpenAsyncL(MMsvSessionObserver   &) '
make:   ***   [..\..\..\..\EPOC32\RELEASE\ARMI\UREL\MYSTART.EXE]   Error   1
ERROR:   RCMake   failed:   (Make):   make   command   exited   with   result   2.   (Reason:   The   system   cannot   find   the   file   specified.)


[解决办法]
在你的mmp文件里加上LIBRARY msgs.lib 可消除上面的错误!
[解决办法]
顶!

楼上的是正解!

你的代码当中只添加了h文件,而没有实现。

类似于你在代码当中只写了函数声明,没有写函数体一样。编译的时候会找不到实现。

热点排行