@ProCxx

Страница 831 из 2477
Kathu
02.05.2017
10:42:08
вроде можно как то def файл же создать и посмотри LoadLibraryEx

но хз поможет ли

Gregor
02.05.2017
10:42:54
спасибо всем, сейчас гляну

Alexander
02.05.2017
10:46:51
вроде можно как то def файл же создать и посмотри LoadLibraryEx
Сейчас бы советовать loadlibrary при наличии boost.dll

Google
Friedrich
02.05.2017
10:47:20
Буст не все любят почему-то.

Alexander
02.05.2017
10:47:42
Kathu
02.05.2017
10:47:58
у вас тут что, секта свидетелей буста? ради одной дллки в проект буст линковать, если его до этого там не было - оверкилл

Friedrich
02.05.2017
10:48:34
Подключить как зависимость — это да, и это может внести оверхед. А может и не внести.

Daniil
02.05.2017
10:49:47
кстати, вброс про буст небольшой

за что я люблю буст. Вот смотришь и сразу понятно как код работает и очень удобно читать сорцы // Declare a group of options that will be // allowed only on command line po::options_description generic("Generic options"); generic.add_options() ("version,v", "print version string") ("help", "produce help message") ; // Declare a group of options that will be // allowed both on command line and in // config file po::options_description config("Configuration"); config.add_options() ("optimization", po::value<int>(&opt)->default_value(10), "optimization level") ("include-path,I", po::value< vector<string> >()->composing(), "include path") ; // Hidden options, will be allowed both on command line and // in config file, but will not be shown to the user. po::options_description hidden("Hidden options"); hidden.add_options() ("input-file", po::value< vector<string> >(), "input file") ;

офигенная конструкция generic.add_options() ("version,v", "print version string") ("help", "produce help message") ;

наверняка add_options возвращает какой-нибудь тип данных у которого перегружен operator() который возвращает референс на себя же

называется как реализовать builder или чото в таком ключе чтобы никто ничего не понял

Daniil
02.05.2017
10:50:23
Да, это так.
ад же блин(

Google
Friedrich
02.05.2017
10:50:35
называется как реализовать builder или чото в таком ключе чтобы никто ничего не понял
Но ведь это прям первое, что описывается в документаци на boost::program_options.

Нельзя читать документацию и не знать про этот билдер

Но, если пытаться раскурить чужой код, не читая документации на библиотеку, это и правда покажется неочевидным.

Daniil
02.05.2017
10:51:35
если бы я такое встретил в коде я бы кирпичей наложил

вот вот

Gregor
02.05.2017
10:52:30
чуваки, я вовсе не хотел вкидывать про винду

Kathu
02.05.2017
10:52:44
Ну да, лучше винду ставить. Ага
холивары в другом чатике

Friedrich
02.05.2017
10:52:46
Про винду вкидывайте в холиварах.

Vladislav
02.05.2017
10:52:55
в посиксе есть getopt/getopt_long для этих дел

Antony
02.05.2017
10:54:04
если бы я такое встретил в коде я бы кирпичей наложил
Что-то я не пойму, что именно вам не нравится (я совершенно серьезно, без всяких подколов)? Вот это generic.add_options() ("version,v", "print version string") ("help", "produce help message") ; выглядит в 100 раз читабельнее, чем какой-нить getopt или им подобные решения

Vladislav
02.05.2017
10:54:31
для парсинга аргументов

Vladislav
02.05.2017
10:54:58
гетопт не умеет прасить ини файлики
а это только для инишников?

Daniil
02.05.2017
10:55:12
хз я для этого либу искал

я всеравно не стал пользовать, поэтмоу забил

нет?

или args << "version,v" << "print" << ...

Google
Daniil
02.05.2017
10:58:20
в первом случаи не пришлось бы скорее всего лезть в доки или тереть глаза?

Vladislav
02.05.2017
10:58:43
аргументы приложения это.

Daniil
02.05.2017
10:58:58
да да там коммент есть // Declare a group of options that will be // allowed only on command line

а еще есть // Declare a group of options that will be // allowed both on command line and in // config file что как бы намекает

Kathu
02.05.2017
10:59:51
я тоже не против буста и сам активно использую, просто считаю, что если можно сделать без буста стандартными средствами, то лучше без буста

Friedrich
02.05.2017
10:59:52
Ну, в настоящем-то коде никто не станет расставлять комментарии от тьюториала.

Kathu
02.05.2017
11:00:01
может это просто травма психологическая

Friedrich
02.05.2017
11:00:12
И там тебе придётся приседать ради кроссплатформенности.

Artem
02.05.2017
11:00:35
или args << "version,v" << "print" << ...
А какая разница? Везде есть структура, она сразу понятна из примера

Andrei
02.05.2017
11:01:11
Kathu
02.05.2017
11:01:22
после того, как я пытался понять и починить код, который парсит метаданные mjpeg с помощью boost::spirit'a

Friedrich
02.05.2017
11:01:46
я тоже не против буста и сам активно использую, просто считаю, что если можно сделать без буста стандартными средствами, то лучше без буста
А вообще, всё надо инженерным методом оценивать. Есть задача и есть способы решения: использовать библиотеку (+N чч на поддержку системы сборки) или написать своё (+M чч на написание и отладку). Ну а дальше решай.

Daniil
02.05.2017
11:01:55
А какая разница? Везде есть структура, она сразу понятна из примера
Да. но секунд 10-60 надо потратить чтобы потупить

это как эти вот извороты с --((i++)++) понятно же

Friedrich
02.05.2017
11:02:21
Я согласен, это еще ок. А вот boost::spirit например читать бесполезно. Это write-only бибилиотека. Хотя тут не понятно, где проблема, в бусте или в C++
Все проблемы шпирита в первую очередь от phoenix, который с ним мешают обычно. И я согласен, что код у этой парочки выходит write-only :(

Daniil
02.05.2017
11:02:48
раз есть нечитабельная фича в языке давайте ее заюзаем, ведь мы профи, а те кто непонимает с первого раза лошки)

Friedrich
02.05.2017
11:03:39
а не подскажете стандартное средство для dll ?
А вы какой стандарт исповедуете?

Google
Friedrich
02.05.2017
11:04:05
Не подскажем. ?

Kathu
02.05.2017
11:04:14
а не подскажете стандартное средство для dll ?
LoadLibrary(-Ex) для WinApi, в божественном линуксе не знаю как это делается

Andrei
02.05.2017
11:04:23
dlopen поди

Kathu
02.05.2017
11:04:24
Аминь.

Alexander
02.05.2017
11:04:29
Дед Пегас
02.05.2017
11:04:36
Очень жаль, что в плюсах сложно красиво реализовать парсер а ля парсек хаскелевский.

Andrei
02.05.2017
11:05:03
Очень жаль, что в плюсах сложно красиво реализовать парсер а ля парсек хаскелевский.
Можно, я делал, но он всё равно не нстолько хорош, из-за того, что плюсы не ленивые.

Friedrich
02.05.2017
11:05:26
Очень жаль, что в плюсах сложно красиво реализовать парсер а ля парсек хаскелевский.
Я за хаскелевский парсек не скажу, но имел дело с FParsec на F#. И вот что: с ним примерно на 50% легче, чем с boost::spirit, но поддержка полноценного парсера языка программирования всё равно требует нечеловеческих усилий.

Admin
ERROR: S client not available

Kathu
02.05.2017
11:05:36
я просил стандартное, а не platform-dependent
т.е. конструкция вида if WIN32 LoadLibrary else dlopen - это ниибаца платформ индепендент?

Alexander
02.05.2017
11:05:36
А зачем?
а, то есть если dll грузить, то пишем сами ifdef? ?

т.е. конструкция вида if WIN32 LoadLibrary else dlopen - это ниибаца платформ индепендент?
и Вы хотите сказать, что так делать правильно при наличии уже готового велосипеда?

Friedrich
02.05.2017
11:06:31
т.е. конструкция вида if WIN32 LoadLibrary else dlopen - это ниибаца платформ индепендент?
Да, это platform-dependent по определению. Вот ты сейчас две платформы покрыл, а если ещё появятся?

Плюшка
02.05.2017
11:06:32
Alexander
02.05.2017
11:06:49
Есть же dlfcn для винды
Стандартное != для винды.

Andrei
02.05.2017
11:07:07
Я за хаскелевский парсек не скажу, но имел дело с FParsec на F#. И вот что: с ним примерно на 50% легче, чем с boost::spirit, но поддержка полноценного парсера языка программирования всё равно требует нечеловеческих усилий.
На хаскеле действительно парсер пишется играючи. Я ради удовольствия с нуля парсек переписывал. В конечном итоге всё доводится до состояния когда ты прямо на языке граматику описываешь тупо в BNF

Плюшка
02.05.2017
11:07:09
Стандартное != для винды.
А в нормальных системах оно искаропки

Gregor
02.05.2017
11:07:18
у меня есть буст, скомпиленный в длл, в принципе его можно подключать)))

Google
Friedrich
02.05.2017
11:07:23
Стандартное != для винды.
Ну, я думаю, всем понятно, что в стандарте C++ такого нету и в ближайшее время не предвидится. Вот и обсуждают околостандартные решения :)

Alexander
02.05.2017
11:07:35
А в нормальных системах оно искаропки
Стандартное - это то, что в такой книженции здоровой написано

Kathu
02.05.2017
11:07:42
Да, это platform-dependent по определению. Вот ты сейчас две платформы покрыл, а если ещё появятся?
потому что нет ничего платформо-независимого, как нет платформо-независимого компилятора

Gregor
02.05.2017
11:07:44
LPCSTR funcName = static_cast<LPCSTR>("?add@MyDLL@MyDLLNamespace@@SANNN@Z"); вот такое имя внутри нэймспейса и класса для статического метода

Дед Пегас
02.05.2017
11:08:03
А в чём проблема взять буст?

Религия?

Плюшка
02.05.2017
11:08:10
Но если ты и так покрываешь 99% систем, то зачем делать что-то?

Alexander
02.05.2017
11:08:18
А в чём проблема взять буст?
для некоторых задач он тяжёл

Friedrich
02.05.2017
11:08:24
На хаскеле действительно парсер пишется играючи. Я ради удовольствия с нуля парсек переписывал. В конечном итоге всё доводится до состояния когда ты прямо на языке граматику описываешь тупо в BNF
Вот ты так говоришь, как будто до этого состояния добрался — и всё, выиграл. А это на самом деле только начало работы! Дальше ты этот парсер переписываешь, уточняешь грамматику, отлаживаешь. И это как раз и есть самый ад.

Дед Пегас
02.05.2017
11:08:26
Выцепи только его.

Верней, только конкретный модуль.

Gregor
02.05.2017
11:08:38
вопрос про буст мне адресован или кому?

Дед Пегас
02.05.2017
11:08:47
Блин, ведь его даже весь компилять нет нужды.

Gregor
02.05.2017
11:09:43
мне не нужен буст, ибо я просто смотрю, как собирать приложения с длл и ковыряю с++

начинающий так скажем

надеюсь, вопрос снят

Дед Пегас
02.05.2017
11:10:27
омг

А уж развели...

Gregor
02.05.2017
11:10:45
dumpbin /EXPORTS помог я так понимаю, это некий аналог objdump в gcc

Friedrich
02.05.2017
11:10:45
Ничего не разводили. Обсудили вопрос и всё.

Страница 831 из 2477