undefined reference to错误如何解决

asingoro 2007-01-16 03:34:45
想写一个在后台监视短信的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.)
...全文
7113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctroll 2011-11-24
  • 打赏
  • 举报
回复

这个“undefined reference to ”一般是在找不到相应的库文件的时候产生的,没有加入Array.o也算是没有找到库文件的一种。有时可能需要在编译选项里加入"_lLIBNAME",来指定要加入的库文件。
如:makefile写错,少加了某个.o文件。


ctroll 2011-11-24
  • 打赏
  • 举报
回复
这个“undefined reference to ”一般是在找不到相应的库文件的时候产生的,没有加入Array.o也算是没有找到库文件的一种。有时可能需要在编译选项里加入"_lLIBNAME",来指定要加入的库文件。

跟随内心 2011-02-26
  • 打赏
  • 举报
回复
后台监视短信?????


不要作恶啊~~~~
asingoro 2007-01-17
  • 打赏
  • 举报
回复
问题解决了,谢谢二位的帮忙!
ManZY 2007-01-16
  • 打赏
  • 举报
回复
顶!

楼上的是正解!

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

类似于你在代码当中只写了函数声明,没有写函数体一样。编译的时候会找不到实现。
zhaojiangwei102 2007-01-16
  • 打赏
  • 举报
回复
在你的mmp文件里加上LIBRARY msgs.lib 可消除上面的错误!

3,120

社区成员

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

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