Пишу экстеншен для одной игры. Обычная ддл-ка в виде логера. Имеется вот такой кусок кода:
int __stdcall RVExtensionArgs(char *output, int outputSize, const char *function, const char **args, int argsCnt)
{
if (!strncmp(function, "logger", 2))
{
std::string fnc = args[0];
std::string ln = args[1];
std::string dir = args[2];
//Output it as the .dll result to arma 3
strncpy_s(output, outputSize, "Log created!", _TRUNCATE);
//Get current Server Time for loggin
time_t currentTime;
struct tm *localTime;
time(¤tTime); // Get the current time
localTime = localtime(¤tTime); // Convert the current time to the local time
//Convert them to strings
string Day = to_string(localTime->tm_mday);
string Month = to_string(localTime->tm_mon + 1);
string Year = to_string(localTime->tm_year + 1900);
string Hour = to_string(localTime->tm_hour);
string Min = to_string(localTime->tm_min);
string Sec = to_string(localTime->tm_sec);
//Create Dir for Logging
// std::string dir = "D:\\A3Logs";
// CreateDirectoryA(dir, NULL);
//define the path and filename and log it.
string logname = dir + "/" + ln + ".txt";
logname.erase(remove( logname.begin(), logname.end(), '\"' ),logname.end());
std::ofstream log(logname, std::ios_base::app | std::ios_base::out);
log << Day << "-" << Month << "-" << Year << " - " << Hour << ":" << Min << ":" << Sec << " :: " << fnc << "\n";
}
return 0;
};
. Который по сути и представляет собой логгер. В переменную dir должен приходить абсолютный путь для сохранения файла. Но хотелось бы если приходит в аргумент пустой стринг, то файл должен сохраняться в корне с длл-кой. Что-то на подобии шарпового Environment.CurrentDirectory. Алсо, экстеншен будет компилиться под линукс.
Linux-based ОС: [спасибо за замечание @Fat-Zer]
#include <unistd.h>
char buf[PATH_MAX];
readlink("/proc/self/exe", buf, PATH_MAX);
Windows: GetModuleFilename
MacOS:
#include <mach-o/dyld.h>
char path[1024];
uint32_t size = sizeof(path);
if (_NSGetExecutablePath(path, &size) == 0)
printf("executable path is %s\n", path);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хочется выполнить вычисления в отдельном от Ui потоке без всяких сигналовМетод, выполняющий вычисления — это приватный слот главного окна
Можно ли сделать что-то похожее на XAML в C# (WPF)? Отделить UI от кода?