Size: a a a

2020 August 25

SH

Serhii Herashchenko in supapro.cxx
Егор
У меня вопрос. Есть функция EncodeBytes которая на вход принимает const unsigned char* — данные (байтики) и size_t — размер данных. Если у меня есть вектор интов, то правильно будет вызвать ее вот так
EncodeBytes(reinterpret_cast<const unsigned char*>(data.data()),data.size()*sizeof(decltype(data)::value_type))
?
источник

SH

Serhii Herashchenko in supapro.cxx
Это как вариант, если вектор часто надо енкодить
источник

A

Aleksandr in supapro.cxx
Господа, у меня возник вопрос относительно линковки библиотек в винде. При создании динамической библиотеки я линкую в нее статическую, и в итоге вижу что из динамической экспортируются не только те функции, что мною запланированы, но и те, что экспортирует статическая библиотека.
Например, я при создании библиотеки dynamic.dll с экспортируемой функцией foo() я линкую в нее static.lib из которой экспортируется bar(). В итоге, из dynamic.dll экспортируются и foo(), и bar().
По какой-то причине это происходит не со всеми библиотеками. Решение наверняка элементарное, но не могу к нему прийти
Среда и компилятор MSVC 2017
источник

SH

Serhii Herashchenko in supapro.cxx
Aleksandr
Господа, у меня возник вопрос относительно линковки библиотек в винде. При создании динамической библиотеки я линкую в нее статическую, и в итоге вижу что из динамической экспортируются не только те функции, что мною запланированы, но и те, что экспортирует статическая библиотека.
Например, я при создании библиотеки dynamic.dll с экспортируемой функцией foo() я линкую в нее static.lib из которой экспортируется bar(). В итоге, из dynamic.dll экспортируются и foo(), и bar().
По какой-то причине это происходит не со всеми библиотеками. Решение наверняка элементарное, но не могу к нему прийти
Среда и компилятор MSVC 2017
покажи код
источник

D

Danya in supapro.cxx
auto size = vec.size() * sizeof(T);
Только вот так
источник

SH

Serhii Herashchenko in supapro.cxx
Danya
auto size = vec.size() * sizeof(T);
Только вот так
ой да
источник

A

Aleksandr in supapro.cxx
Serhii Herashchenko
покажи код
источник

A

Aleksandr in supapro.cxx
этого достаточно чтобы воспроизвелось
источник

A

Aleksandr in supapro.cxx
источник

A

Aleksandr in supapro.cxx
А вот подключаемый хедер
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksandr
Господа, у меня возник вопрос относительно линковки библиотек в винде. При создании динамической библиотеки я линкую в нее статическую, и в итоге вижу что из динамической экспортируются не только те функции, что мною запланированы, но и те, что экспортирует статическая библиотека.
Например, я при создании библиотеки dynamic.dll с экспортируемой функцией foo() я линкую в нее static.lib из которой экспортируется bar(). В итоге, из dynamic.dll экспортируются и foo(), и bar().
По какой-то причине это происходит не со всеми библиотеками. Решение наверняка элементарное, но не могу к нему прийти
Среда и компилятор MSVC 2017
> и в итоге вижу что из динамической экспортируются не только те функции, что мною запланированы, но и те, что экспортирует статическая библиотека.
> я линкую в нее static.lib из которой экспортируется bar()

Всё правильно
источник

ПК

Побитый Кирпич... in supapro.cxx
Зачем из bar экспортируешь функцию если это статическая библиотека?
источник

A

Aleksandr in supapro.cxx
Я не разработчик условной bar. А ее разработчики экспортируют функции чтобы я мог ими пользоваться.
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksandr
Я не разработчик условной bar. А ее разработчики экспортируют функции чтобы я мог ими пользоваться.
Чтобы ими пользоваться их не надо экспортировать
источник

ПК

Побитый Кирпич... in supapro.cxx
Ты же сам сказал что это статическая библиотека
источник

ПК

Побитый Кирпич... in supapro.cxx
Экспорт тут имеет значение только в контексте динамической библиотеки
источник

A

Aleksandr in supapro.cxx
Хорошо, пусть так. Значит, проблема в неверно сформированной статической библиотеке?
источник

ПК

Побитый Кирпич... in supapro.cxx
Да, в режиме "статическая библиотека" она не должна экспортировать ничего
источник

IZ

Ilia Zviagin in supapro.cxx
Егор
У меня вопрос. Есть функция EncodeBytes которая на вход принимает const unsigned char* — данные (байтики) и size_t — размер данных. Если у меня есть вектор интов, то правильно будет вызвать ее вот так
EncodeBytes(reinterpret_cast<const unsigned char*>(data.data()),data.size()*sizeof(decltype(data)::value_type))
?
С какой целью эта операция производится?
источник

ПК

Побитый Кирпич... in supapro.cxx
Собственно она так и делает
источник