У меня такое ощущение, что я упускаю что-то действительно глупое, но все же: у меня есть эта досадная ошибка "внешнего символа" в игровом движке, который я пишу:
По сути, я хочу создать класс, который читает путь в некоторых глобальных переменных (поэтому мне не нужно отправлять их повсюду). Я использовал NFD (nativefiledialog) из github для открытия файлов. До этого я проверял это непосредственно в main.cpp, но проблемы возникали только после помещения его в класс.
https://github.com/mlabbe/nativefiledialog
paths.h
#pragma once
#include <iostream>
#include <nfd.h>
namespace RW {
class Paths {
private:
static nfdchar_t *gamePath;
static nfdresult_t result;
public:
static void chooseGamePath();
};
}
Paths.cpp
#include "Paths.h"
namespace RW {
nfdchar_t Paths::*gamePath = NULL;
nfdresult_t Paths::result;
void Paths::chooseGamePath()
{
result = NFD_OpenDialog(NULL, NULL, &gamePath);;
std::cout << "Please choose the location of the warcraft's exe file!" << std::endl;
if (result == NFD_OKAY) {
std::cout << "Success!" << std::endl;
std::cout << gamePath << std::endl;
free(gamePath);
}
else if (result == NFD_CANCEL) {
std::cout << "User pressed cancel." << std::endl;
}
else {
std::cout << "Error: " << NFD_GetError() << std::endl;
}
}
}
Ошибка:
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "private: static char * RW::Paths::gamePath" (?gamePath@Paths@RW@@0PADA) Half-an Engine D:\Programozás\Repositories\Warcraft-II-HD\Half-an Engine\Paths.obj 1