Problem z definicja lub Destruktorem

0

Witajcie, probuje dodac do swojej aplikacji Discord RCP [Jak to ma dzialac? Przy właczeniu mojej aplikacji na discordzie pojawia sie "Playing a Game Name"
Lecz problem mam z defnicja lub destruktorem juz 2 dni kombinuje zeby to jakos zainicjowac ale nie potrafie tego zrobic, macie jakies wskazkowki zeby przejsc ten bład
ERROR :

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol "public: class discord::ActivityTimestamps __thiscall discord::Activity::GetTimestamps(void)" (?GetTimestamps@Activity@discord@@QAE?AVActivityTimestamps@2@XZ) referenced in function "public: virtual void __thiscall appX::Discord1(void)" (?Discord1@appX@@UAEXXZ)

Wiem ze na pewno czyta biboletke itd (bo gdy zdeklerowalem np : void SetType(ActivityType type) { }; zamiast void SetType(ActivityType type); to byl jeden problem mniej 

Dziękuje jesli ktoś moze mi wytłumaczyc co robie zle, nie zbyt duzo programuje, a chciałbym juz sobie z tym poradzic. :) Jakis mały TIP?/HINT?

Jest to Bibloteka Discordu
Wywołuje to tak:

void appX::Discord1() {
	VM_START
	time_t curtime;

	DiscordState state{};
	discord::Core* core{};
	auto result = discord::Core::Create(930506539649884160, DiscordCreateFlags_Default, &core);
	state.core.reset(core);

	if (!state.core) {
		LogOutput("[FAILED] - Discord Rich Presence failed to instantiate!.\n");
	}

	discord::Activity activity{};


	activity.SetDetails("In Launcher");
	activity.SetState("Waiting to play game");

	activity.GetAssets().SetSmallImage("logo");
	activity.GetAssets().SetSmallText("logo");
	activity.GetAssets().SetLargeImage("logo");
	activity.GetAssets().SetLargeText("Dying Dawn");
	activity.GetTimestamps().SetStart(time(&curtime));
	activity.SetType(discord::ActivityType::Playing);


	state.core->ActivityManager().UpdateActivity(activity, [](discord::Result result) {
		if (result == discord::Result::Ok) {
			//LogOutput("[SUCCESS] - Discord Rich Presence started succeeded.");
		}
		else {
			//LogOutput("[FAILED] - Discord Rich Presence Failed.\n");
		}
	});
	state.core->RunCallbacks();
	VM_END
}

Dane:

class Activity final {
public:
	void SetType(ActivityType type) {};
    ActivityType GetType() const;
    void SetApplicationId(std::int64_t applicationId);
    std::int64_t GetApplicationId() const;
	void SetName(char const* name) {};
    char const* GetName() const;
	void SetState(char const* state) {};
    char const* GetState() const;
	void SetDetails(char const* details) {};
    char const* GetDetails() const;
	ActivityTimestamps& GetTimestamps();
	ActivityTimestamps const& GetTimestamps() const;
	ActivityAssets& GetAssets();
    ActivityAssets const& GetAssets() const;
    ActivityParty& GetParty();
    ActivityParty const& GetParty() const;
    ActivitySecrets& GetSecrets();
    ActivitySecrets const& GetSecrets() const;
    void SetInstance(bool instance);
    bool GetInstance() const;

private:
	DiscordActivity internal_;
};

nastepne

class ActivityTimestamps final {
public:
	void SetStart(Timestamp start) {};
	Timestamp GetStart() const;
	void SetEnd(Timestamp end) {};
	Timestamp GetEnd() const ;
private:
    DiscordActivityTimestamps internal_;
};
ActivityTimestamps& Activity::GetTimestamps()
{
    return reinterpret_cast<ActivityTimestamps&>(internal_.timestamps);
}

0

Błąd wskazuje na brak implementacji funkcji. Masz jej deklarację. Czy ta funkcja ma być zaimplementowana przez Ciebie, czy dostarcza ją biblioteka, czy jak?
Stawiam na to drugie. Jeśli mam rację, musisz jakoś dodać ją do linkowanych bibliotek. Jak - nie wiem dokładnie, bo nie znam Visuala na tyle; mogę jedynie wspomóc Cię dokumentacją. Ew. jeśli używasz innego build systemu, np. CMake to wklej jego konfig, wtedy będziemy myśleć ;)

0

@alagner:
Wiec
Wywołanie tej funkcji w ten sposob, działa normalnie jak widac ona ma w headerze takie cos przypisane
activity.SetDetails("In Launcher");

void SetDetails(char const* details) {};
a gdy usune {}
void SetDetails(char const* details);
Jest podobny błąd jak tam wyżej.

0

No więc z dużym prawdopodobieństwem źle linkuje Ci się biblioteka.
To: void SetDetails(char const details) {};
to jest utworzenie pustej funkcji o nazwie SetDetails
To : void SetDetails(char const details); to jest deklaracja (prototyp/zapowiedź) funkcji. Informuje że ta funkcja istnieje gdzieś indziej (np. w innym pliku CPP czy w skompilowanej bibliotece). BTW, w obu zgubiłeś *, ale pal to sześć ;) No i teraz:
a. musisz samodzielnie te funkcje napisać (co zrobiłeś w w/w przykładzie. Tylko funkcja nic nie robi)
b. musisz dobrze podlinkować libkę. (czego pewnie nie zrobiłeś)
c. musisz załączyć plik źródłowy z implementacją tej funkcji (takoż)

A w pierwszej kolejności musisz dobrze poznać podstawy języka ;)

EDIT: podaj linka do tej biblioteki i jej dokumentacji.

1

Sprawdziłem co podałeś w linku. Masz coś na 100% nie tak z konfiguracją budowania, bo odpowiedni kod w libce jest:
https://github.com/msciotti/discord-game-sdk-test-apps/blob/master/cpp-examples/example-presence/example-presence/discord-files/types.cpp

1 użytkowników online, w tym zalogowanych: 0, gości: 1