ОК, на основании вашего комментария:
Целью компиляции является DLL, "out.dll"
Я бы предположил, что вы используете этот out.dll в каком-то другом проекте. И когда вы пытаетесь сделать это, вы получаете вышеуказанные ошибки компоновщика. Если это так, то это происходит потому, что вы не экспортируете свои функции. Кроме того, иметь такие глобальные функции - плохая практика. Вы должны по крайней мере обернуть их в каком-то классе, например Использует или что-то другое и объявляет их статическими:
Пример Log.h:
#pragma once
#include <iostream>
#include <cstdarg>
class __declspec (dllexport) Utils
{
public:
static void LogAString(char* fmt, ...);
static void LogAnError(char* fmt, ...);
};
Log.cpp должен оставаться почти таким же.
#include "Log.h"
#include <Util/String/String Formatting.h> // defines format(). Does not have any errors or issues.
void Utils::LogAString(char* fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
};
void Utils::LogAnError(char* fmt, ...)
{
va_list ap;
va_start(ap, fmt);
auto formatted_string = format("ERROR: %s", fmt).c_str();
LogAString(const_cast<char*>(formatted_string), ap);
va_end(ap);
};
Теперь, когда вы используете .dll, ваши функции будут экспортированы и доступны для других ваших проектов. Вам также следует включить файл Log.h в ваши каталоги include и убедиться, что файл «out.dll» находится в той же выходной папке вашего основного проекта. Кроме того, вы должны добавить out.lib в дополнительные библиотеки.
Надеюсь, это ваша проблема. В следующий раз предоставьте более подробную информацию.