gpt4 book ai didi

c++ - 从命令提示符编译 BADA 简单的 helloworld 程序并出现错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:27 27 4
gpt4 key购买 nike

我试图为 BADA 编译一个简单的 Helloworld 程序,但是通过命令提示符。编译后我得到的错误是c:/Helloworld/src/Helloworld.cpp:12: 错误:“Osp::App::Application HelloWorld::CreateInstance()”的原型(prototype)与“HelloWorld”类中的任何原型(prototype)都不匹配C:/Helloworld/inc/HelloWorld.h:21: 错误:候选者是:static Osp::App::Application* HelloWorld::CreateInstance()任何机构都可以帮助解决需要用它做的事情。谢谢

Helloworld.h 代码

#ifndef __HELLOWORLD_H__
#define __HELLOWORLD_H__

#include <FBase.h>
#include <FGraphics.h>
#include <FLocales.h>
#include <FSystem.h>
#include <FApp.h>

using namespace Osp::Base;
using namespace Osp::Graphics;
using namespace Osp::Locales;
using namespace Osp::System;
using namespace Osp::App;

class HelloWorld :
public Application // must inherit from Application class
{
public:
// The application must have a factory method that creates an instance of the application.
static Application* CreateInstance(void);

public:
HelloWorld();
~HelloWorld();

public:
// The application must provide its name.
String GetAppName(void) const;

protected:
// The application must provide its ID.
AppId GetAppId(void) const;

AppSecret GetAppSecret(void) const;

public:
// This method is called when the application is initializing.
bool OnAppInitializing(AppRegistry& appRegistry);

// This method is called when the application is terminating.
bool OnAppTerminating(AppRegistry& appRegistry);

// Thie method is called when the application is brought to the foreground
void OnForeground(void);

// This method is called when the application is sent to the background.
void OnBackground(void);

// This method is called when the application has little available memory.
void OnLowMemory(void);

// This method is called when the device's battery level changes.
void OnBatteryLevelChanged(BatteryLevel batteryLevel);
};

#endif

Helloworld.cpp 代码

#include "HelloWorld.h"

HelloWorld::HelloWorld()
{
}

HelloWorld::~HelloWorld()
{
}

Application*
HelloWorld::CreateInstance(void)
{
// You can create the instance through another constructor.
return new HelloWorld();
}

String
HelloWorld::GetAppName(void) const
{
static String appName(L"HelloWorld");
return appName;
}

AppId
HelloWorld::GetAppId(void) const
{
static AppId appId(L"93bt1p123e");
return appId;
}

AppSecret
HelloWorld::GetAppSecret(void) const
{
static AppSecret appSecret(L"9C645DDBA19C71BAD1204DA4DAA7A0B9");
return appSecret;
}

bool
HelloWorld::OnAppInitializing(AppRegistry& appRegistry)
{
// TODO:
// Initialization including UI construction can be done here.
// Load the application's latest data, if necessary.
// If this method is successful, return true; otherwise, return false.
return true;
}

bool
HelloWorld::OnAppTerminating(AppRegistry& appRegistry)
{
// TODO:
// Deallocate or close any resources still alive.
// Save the application's current states, if applicable.
// If this method is successful, return true; otherwise, return false.
return true;
}

void
HelloWorld::OnForeground(void)
{
result r = E_SUCCESS;

Canvas* pCanvas = GetAppFrame()->GetCanvasN();
if(pCanvas == null)
return;

Font* pFont = new Font();
pFont->Construct(FONT_STYLE_PLAIN | FONT_STYLE_BOLD, 50);
pCanvas->SetFont(*pFont);

r = pCanvas->DrawText(Point(30, 30), GetAppName());
if (IsFailed(r))
{
AppLog("pCanvas->DrawText() failed.\n");
delete pCanvas;
return;
}

r = pCanvas->Show();
if (IsFailed(r))
{ AppLog("pCanvas->Show() failed.\n");
delete pCanvas;
return;
}

delete pCanvas;

}

void
HelloWorld::OnBackground(void)
{
}

void
HelloWorld::OnLowMemory(void)
{
// TODO:
// Deallocate as many resources as possible.
}

void
HelloWorld::OnBatteryLevelChanged(BatteryLevel batteryLevel)
{
// TODO:
// It is recommended that the application save its data,
// and terminate itself if the application consumes much battery
}

Helloworldentry.cpp 代码

/**
* OSP Application entry point(OspMain) introduced.
*/
#include <fapp.h>
#include "HelloWorld.h"

using namespace Osp::Base::Collection;

extern "C"
{
__declspec(dllexport) void OspMain(int hInstance, int argc, char *argv[]);
}

/**
* Entry function of OSP Application which is called by the operating system.
*/
extern "C" {
void OspMain(int hInstance, int argc, char *argv[])
{
AppLog("OspMain() Started. \n");

result r = E_SUCCESS;

ArrayList* pArgs = new ArrayList();
pArgs->Construct();
for (int i = 0; i < argc; i++)
{
String* pEachArg = new String(argv[i]);
pArgs->Add(*pEachArg);
}

r = Osp::App::Application::Execute(HelloWorld::CreateInstance, pArgs);
if (IsFailed(r))
{
AppLog("Application execution has failed.\n");
}

if (pArgs)
{
pArgs->RemoveAll(true);
delete pArgs;
}

AppLog("OspMain() Ended. \n");
}
}

最佳答案

编译器提示你定义了一个带有这个签名的方法:

Osp::App::Application HelloWorld::CreateInstance()

HelloWorld 类声明其 CreateInstance 方法具有此签名:

Osp::App::Application* HelloWorld::CreateInstance()

注意返回类型的不同。类定义表明具有此名称的方法返回一个 Application pointer 但您已经实现了一个返回 Application object

以后,请将代码与编译器错误一起发布。几乎不可能单独从产生错误的代码中充分解释编译器错误。例如,在这种情况下,我无法告诉您哪种返回类型是正确的;我只能告诉你返回类型不匹配(这正是编译器已经说过的)。

关于c++ - 从命令提示符编译 BADA 简单的 helloworld 程序并出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3599707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com