Все указано правильно, но я все еще получаю эту ошибку:
Неразрешенный внешний символ LNK2001 "public: static bool __cdecl Logger::Logging::Init(void)" (?Init@Logging@Logger@@SA_NXZ)
Регистратор.h
#include <Windows.h>
#include <stdio.h>
#include <filesystem>
#include <iostream>
class Logger
{
private:
class Logging
{
public:
static inline bool Init();
}
public:
static bool Init(HINSTANCE _hinstDLL);
}
Main.cpp «Место, где я хочу использовать функцию»
#pragma once
#include "Logger.h"
bool Logger::Init(HINSTANCE _hinstDLL)
{
FILE* Console;
AllocConsole();
freopen_s(&Console, "CONOUT$", "w", stdout);
if (!Logging::Init())
{
Logger::Log("Can't start the initialization!\n");
return false;
};
return true;
}
Logger.cpp "Место, где объявлена функция"
#pragma once
#include "Cheat.h"
namespace fs = std::filesystem;
inline bool Logger::Logging::Init()
{
fs::create_directories("C:\\Somewhere");
fs::path log = "C:\\Somewhere\\log.txt";
file = CreateFileW(log.wstring().c_str(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
return file != INVALID_HANDLE_VALUE;
}
удалить встроенный модификатор из объявления и определения Logging::Init()
А зачем ты делаешь Logger::Logging::Init
inline
? Невозможно встроить функции без полного определения, и если они определены в одной единице перевода, их невозможно будет встроить в любую другую единицу перевода.
Кстати... текст в Logger.cpp не является объявлением... это определение функции Logger::Logging::Init(). Объявление находится в Logger.h
Удалась ли компиляция после удаления встроенного?
@ MinxinYu-MSFT Так и было.
Привет, рад узнать, что вы нашли решение этой проблемы! Пожалуйста, подумайте над тем, чтобы ответить на него и принять его как ответ, чтобы изменить его статус на «Отвечено». См. можно я сам отвечу на свой вопрос.., просто напоминание :)
Удаление строки из объявления и определения Logging::Init() решило проблему.
Проблема решена @KermittheFrog.
Спасибо!
Вы строите со всеми исходными файлами? Все ли они в вашем проекте (в самом проекте VS, а не только в том же каталоге на диске)?