VS2022 C ++: ссылка на статический проект LIB с датой/датой.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 VS2022 C ++: ссылка на статический проект LIB с датой/датой.

Сообщение Anonymous »

Я столкнулся с странной проблемой, связанной с датой даты Говарда Хиннанта. Похоже, это связано с использованием date/date.h в статической библиотеке, а затем ссылается на то, что в приложении в одном и том же решении.
Есть несколько различных ошибок:

Код: Выделить всё

incomplete type "std::basic_ios" is not allowed in "date.h"
atomic is not a template in 
incomplete type "std::ios_base" is not allowed in 
numpunct is not a template in 
the global scope has no "clock_t" in 

(And several more like the one in ctime)
< /code>
Есть больше, которые, по -видимому, вызваны вышеупомянутыми, например: < /p>
incomplete type "std::ios_base" is not allowed in 
Основной проект, в котором это происходит, включает заголовки Windows, но я также имел глобально определенную номинальную nominmax , и я могу воспроизвести проблему без заголовков Windows.
Следующие шаги для минимального воспроизводимого примера:

. />
Статическая библиотека с PCH OFF, C ++ 20, C17 (удалить все существующие файлы .h и .cpp) < /li>
Консольное приложение, C ++ 20, C17 < /li>
< /ul>

hourard hIn hin hIn hIn hIn hIn hIn hIn hIn hIn hIn hIn. каталоги.#pragma once

#include
#include

date::sys_time parseISODateString(const std::string& isoDateStr);
< /code>
time.cpp
#include "time.h"

#include
#include

using namespace std;

date::sys_time parseISODateString(const string& isoDateStr) {
if (isoDateStr.empty()) {
return date::sys_time{};
}
istringstream in{ isoDateStr };
date::sys_time tp;
in >> date::parse("%FT%TZ", tp);
if (in.fail())
{
in.clear();
in.exceptions(std::ios::failbit);
in.str(isoDateStr);
in >> date::parse("%FT%T%Ez", tp);
}
return tp;
}
< /code>

Убедитесь, что это строит. < /li>
Добавить ссылку из приложения консоли в статическую библиотеку. Это требуется, поэтому включенное время. PrettyPrint-Override ">#include

#include "time.h"

int main()
{
parseISODateString("2000-01-01T00:00:00.000Z");
std::cout

Попытка построить. < /li>
< /ol>

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

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

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

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

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

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