Spdlog в самостоятельном DLLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Spdlog в самостоятельном DLL

Сообщение Anonymous »

Я строю DLL для использования внутри (ForexTester6). Мой DLL работает без spdlog , но не работает, когда я включаю spdlog . Я добавил директиву SPDLOG_COMPILED_LIB Preproccessor в соответствии с некоторой документацией в Интернете и заметил, что spdlog теперь дополняется DLL. Все хорошо и хорошо, но мне нужен Spdlog, чтобы содержать в моем первоначальном DLL. Как я могу достичь этого? Я новичок в spdlog и установил его с помощью vcpkg install spdlog: x86-windows .
Мой упрощенный код:
(ft5holygrail.h)
>>#pragma once

#ifndef FT5HOLYGRAIL_H_
#define FT5HOLYGRAIL_H_

#define NOMINMAX

#include
#include
#include
#include
#include "IndicatorInterfaceUnit.h"
#include "TechnicalFunctions.h"

#include "spdlog/sinks/rotating_file_sink.h"
#include "spdlog/spdlog.h"
#endif
< /code>
(ft5holygrail.cpp)
#ifndef FT5HOLYGRAIL_H_
#include "FT5HolyGrail.h"
#endif

using namespace std::chrono_literals;

TIndexBuffer PivotHighBuffer, PivotLowBuffer;

bool logging_initialised = false;

EXPORT int __stdcall Init()
{
IndicatorShortName("FT6-HolyGrail");
SetOutputWindow(ow_SeparateWindow);

IndicatorBuffers(2);

PivotHighBuffer = CreateIndexBuffer();
SetIndexBuffer(0, PivotHighBuffer);
SetIndexStyle(0, ds_None, psSolid, 1, clRed);
SetIndexLabel(0, "High Target");

PivotLowBuffer = CreateIndexBuffer();
SetIndexBuffer(1, PivotLowBuffer);
SetIndexStyle(1, ds_None, psSolid, 1, clBlue);
SetIndexLabel(1, "Low Target");

if (!logging_initialised)
{
try
{
const std::string log_path = "C:\\ForexTester6\\LOGS\\HolyGrail.log";
const size_t max_file_size = 1024 * 1024 * 5; // 5 MB
const size_t max_files = 3;

auto file_sink = std::make_shared(log_path, max_file_size, max_files);

auto logger = std::make_shared("default", file_sink);

spdlog::register_logger(logger);

spdlog::set_default_logger(logger);

spdlog::set_level(spdlog::level::trace);

// Set the logging pattern.
// [%Y-%m-%d %H:%M:%S.%f] = Timestamp
// [%l] = Log level (e.g., info, debug)
// [%!] = Source function name
// [%v] = The log message
spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%f] [%l] [%!] %v");

spdlog::flush_on(spdlog::level::trace);

logging_initialised = true;

spdlog::info("Logging system initialized successfully.");
}
catch (const spdlog::spdlog_ex &ex)
{
return -1;
}

}

spdlog::debug("Init() completed.");

return 0;
}

EXPORT void __stdcall Done()
{
spdlog::shutdown();
}

EXPORT void __stdcall OnParamsChange()
{
Done();
Init();
}

EXPORT void __stdcall Calculate(int index)
{
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... tained-dll
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»