Size: a a a

2021 March 26

VF

Vitaly Farmov in pro.cxx
Здравствуйте.
Есть сторонняя библиотека, написанная на стандарте C++98. В ее интерфейсе используется std::auto_ptr, который благополучно выпилен из C++17. Проект, в котором планируется использовать эту библиотеку использует стандарт C++17. Планируется написать враппер для сторонней библиотеки в виде статической библиотеки на стандарте C++11, в интерфейсе которой уже не будет несовместимых с C++17 вещей и использовать в проекте данный враппер. Легально ли это и могут ли возникнуть какие-то подводные камни? Естественно, все проекты будут собираться одним тулсетом, конкретно последней вижлой.
источник

IZ

Ilia Zviagin in pro.cxx
Vitaly Farmov
Здравствуйте.
Есть сторонняя библиотека, написанная на стандарте C++98. В ее интерфейсе используется std::auto_ptr, который благополучно выпилен из C++17. Проект, в котором планируется использовать эту библиотеку использует стандарт C++17. Планируется написать враппер для сторонней библиотеки в виде статической библиотеки на стандарте C++11, в интерфейсе которой уже не будет несовместимых с C++17 вещей и использовать в проекте данный враппер. Легально ли это и могут ли возникнуть какие-то подводные камни? Естественно, все проекты будут собираться одним тулсетом, конкретно последней вижлой.
Кто на ком стоял — я не понял.

Нафига врапер если можно просто скомпилить в С++17?
auto_ptr конечно выпилить, заменить на unique_ptr
источник

IZ

Ilia Zviagin in pro.cxx
Vitaly Farmov
Здравствуйте.
Есть сторонняя библиотека, написанная на стандарте C++98. В ее интерфейсе используется std::auto_ptr, который благополучно выпилен из C++17. Проект, в котором планируется использовать эту библиотеку использует стандарт C++17. Планируется написать враппер для сторонней библиотеки в виде статической библиотеки на стандарте C++11, в интерфейсе которой уже не будет несовместимых с C++17 вещей и использовать в проекте данный враппер. Легально ли это и могут ли возникнуть какие-то подводные камни? Естественно, все проекты будут собираться одним тулсетом, конкретно последней вижлой.
Разные стандарты — это не несовместимые миры, это просто режим работы компилятора.

Даже если auto_ptr депрекейтнут, можно его заменить или даже использовать так.
источник

VF

Vitaly Farmov in pro.cxx
Ilia Zviagin
Кто на ком стоял — я не понял.

Нафига врапер если можно просто скомпилить в С++17?
auto_ptr конечно выпилить, заменить на unique_ptr
Как я отметил, библиотека сторонняя, переписать не получится.
источник

IZ

Ilia Zviagin in pro.cxx
Vitaly Farmov
Здравствуйте.
Есть сторонняя библиотека, написанная на стандарте C++98. В ее интерфейсе используется std::auto_ptr, который благополучно выпилен из C++17. Проект, в котором планируется использовать эту библиотеку использует стандарт C++17. Планируется написать враппер для сторонней библиотеки в виде статической библиотеки на стандарте C++11, в интерфейсе которой уже не будет несовместимых с C++17 вещей и использовать в проекте данный враппер. Легально ли это и могут ли возникнуть какие-то подводные камни? Естественно, все проекты будут собираться одним тулсетом, конкретно последней вижлой.
Ок, да, так легально делать
источник

IZ

Ilia Zviagin in pro.cxx
Vitaly Farmov
Здравствуйте.
Есть сторонняя библиотека, написанная на стандарте C++98. В ее интерфейсе используется std::auto_ptr, который благополучно выпилен из C++17. Проект, в котором планируется использовать эту библиотеку использует стандарт C++17. Планируется написать враппер для сторонней библиотеки в виде статической библиотеки на стандарте C++11, в интерфейсе которой уже не будет несовместимых с C++17 вещей и использовать в проекте данный враппер. Легально ли это и могут ли возникнуть какие-то подводные камни? Естественно, все проекты будут собираться одним тулсетом, конкретно последней вижлой.
Тем не менее, конечно подводные камни могут возникнуть.
источник

VF

Vitaly Farmov in pro.cxx
Ilia Zviagin
Ок, да, так легально делать
Спасибо
источник

IZ

Ilia Zviagin in pro.cxx
Vitaly Farmov
Спасибо
Смотри, у тебя как минимум будет два рантайма. 98ой и 17ый.
98ой будет нужен для auto_ptr , а 17 — для нового слоя.

(хотя может быть auto_ptr всё ещё есть в CRT от 17го, тогда вообще шик)
Если так, то это нарушение ODR - рантайм должен быть один.
Надо будет изолировать один от другого — например, статически один использовать
а другой -динамически. Но при этом надо очень аккуратно всё писать, чтобы
не тягать объекты из одного рантайма в другой.
источник

IZ

Ilia Zviagin in pro.cxx
Вот такого плана проблемы
источник

VF

Vitaly Farmov in pro.cxx
Ilia Zviagin
Смотри, у тебя как минимум будет два рантайма. 98ой и 17ый.
98ой будет нужен для auto_ptr , а 17 — для нового слоя.

(хотя может быть auto_ptr всё ещё есть в CRT от 17го, тогда вообще шик)
Если так, то это нарушение ODR - рантайм должен быть один.
Надо будет изолировать один от другого — например, статически один использовать
а другой -динамически. Но при этом надо очень аккуратно всё писать, чтобы
не тягать объекты из одного рантайма в другой.
Понял. Спасибо большое ещё раз.
источник

А

Александр in pro.cxx
Ребят, подскажите,
Есть библиотека на C++, мне надо прикрутить её к проекту на C#

Как я могу вызвать метод класс библиотеки из проекта C#?
Вот такую конструкцию увидел в коде Python

agora::common::RtcEngineBridge *
источник

AS

Anatoly Shirokov in pro.cxx
Александр
Ребят, подскажите,
Есть библиотека на C++, мне надо прикрутить её к проекту на C#

Как я могу вызвать метод класс библиотеки из проекта C#?
Вот такую конструкцию увидел в коде Python

agora::common::RtcEngineBridge *
В prodotnet лучше спросить. А так pinvoke и т.п. https://docs.microsoft.com/en-us/cpp/dotnet/calling-native-functions-from-managed-code?view=msvc-160
источник

D

Danya in pro.cxx
Можно ещё посмотреть
https://youtu.be/QyR4HwjE9gI
источник

LA

Liber Azerate in pro.cxx
Александр
Ребят, подскажите,
Есть библиотека на C++, мне надо прикрутить её к проекту на C#

Как я могу вызвать метод класс библиотеки из проекта C#?
Вот такую конструкцию увидел в коде Python

agora::common::RtcEngineBridge *
источник

ПК

Побитый Кирпич... in pro.cxx
Danya
Только если для sqlite
Для других тоже есть, но это всё далеко от того что есть в "нормальных языках"
источник
2021 March 27

VK

Valentin Kornienko in pro.cxx
/warn
источник

VK

Valentin Kornienko in pro.cxx
источник

КП

Крылатый Пегас... in pro.cxx
Done
источник

<

<Object object at... in pro.cxx
Привет, в C++ возможно создать экземпляры таких классов?
struct Bar {
   const weak_ptr<Foo> foo;
};

struct Foo {
   const weak_ptr<Bar> bar;
};
источник

VS

Vladimir SHCHerba in pro.cxx
Привет, в C++ возможно создать экземпляры таких классов?
struct Bar {
   const weak_ptr<Foo> foo;
};

struct Foo {
   const weak_ptr<Bar> bar;
};
https://godbolt.org/z/c7YjGEo19
В чём  проблема проверить?
источник