Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
646 / 522 / 72
Регистрация: 20.09.2014
Сообщений: 3,356
1

Использование чужого кода

30.01.2016, 03:31. Показов 1984. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните неопытному.
Допустим я пишу программу в Qt под Windows. Хочу использовать сторонние библиотеки, написанные на Delphi. Если не ошибаюсь, библиотеки доступны через механизм ActiveX, то есть через стандартный интерфейс Windows.

И тут возникают вопросы:
1. А что, если приложение не под Windows, а под Linux или Android? Те библиотеки Delphi не будут работать?
2. Какие еще способы использования чужого кода применяются? Насколько часто они применяются (насколько популярны)?
3. Какие еще имеются ограничения на использование чужого кода?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2016, 03:31
Ответы с готовыми решениями:

Посоветуйте софт для облегчения анализа и сокращения объема чужого кода
Долго думал "В какой же раздел запостить тему? так как не нашёл на форуме раздела, посвященному...

Использование чужого IP адреса
Задача в том чтобы трафик пк, не находящегося в локальной сети роутера, проходил через этот роутер....

Использование чужого айпи
Уважаемые компьютерные знатоки, может пишу не в том разделе, но вопрос так или иначе связан с...

Ответственность за использование чужого движка
Доброго времени суток. Встал вопрос такого характера. Есть движок сайта, которым владеет некоторая...

10
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.01.2016, 07:28 2
Цитата Сообщение от Mikhaylo Посмотреть сообщение
2. Какие еще способы использования чужого кода применяются?
Сборка из исходников под нужную платформу.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
3. Какие еще имеются ограничения на использование чужого кода?
Разные могут быть, зависит от лицензии, под которой распостраняется этот чужой код.
GPL, например, требует открытия исходников и использования только GPL-совместимых лицензий.
Могут быть коммерческие лицензии, доступные за деньги, иногда довольно большие.
И т.д.
1
646 / 522 / 72
Регистрация: 20.09.2014
Сообщений: 3,356
30.01.2016, 17:46  [ТС] 3
Ну про сборку исходного кода - понятно, это по идее прямое заимствование кода.

На слуху, например, передача кода через dll-библиотеки. Это не одно и тоже, что и ActiveX?

Интересуют не юридические ограничения, а технические. Могут быть кроссплатформенные ограничения или кросс-языковые. Так вот, хочу понять пределы применимости.

Например, предоставляют SDK/API, написанные на Delphi. На каких платформах я могу применять данный API?
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
03.02.2016, 00:29 4
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Это не одно и тоже, что и ActiveX?
Нет. Если хочется кроссплатформенности, про ActiveX лучше забыть. Про него в любом случае лучше забыть, т.к. это давно не «стандартный интерфейс windows» и объявлен deprecated.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Могут быть кроссплатформенные ограничения
Под любую платформу придётся компилировать отдельно, а также не использовать в своих библиотеках платформозависимые библиотеки.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
кросс-языковые
Практически все (если не все) языки умеют подключать сишные библиотеки. При компилировании Делфийской библиотеки нужно будет указать, что её формат должен быть сишным, если Делфи такое умеет.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Так вот, хочу понять пределы применимости.
Практически весь кроссплатформенный софт так и написан: общая функциональность в сишной разделяемой библиотеке, платформозависимые вещи (типа UI) — специфическим для платформы способом (Windows: WinAPI/WinFroms/WPF ; OS X: Cocoa; *nix: Qt / Gtk ; Android SDK и т.д.). Впрочем, Qt и Gtk вполне кроссплатформенны. Иногда берут Java или Tcl/Tk. В общем выбор довольно большой.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Например, предоставляют SDK/API, написанные на Delphi. На каких платформах я могу применять данный API?
На тех, под которые Делфи умеет компилировать. Ну или попробовать использовать Lazarus. Компилировать из исходников всё равно придётся, т.к. нельзя просто взять и использовать виндовую dll в линуксе, например.
1
646 / 522 / 72
Регистрация: 20.09.2014
Сообщений: 3,356
03.02.2016, 18:52  [ТС] 5
Очень интересно! То есть практически все программисты используют некоторый стандарт под условным названием "сишная библиотека". Есть ли такой стандарт и где про него популярно можно почитать? Что в общем случае представляет собой "сишная библиотека"? Это файл dll+заголовочный файл?
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
03.02.2016, 20:34 6
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Есть ли такой стандарт
Нет.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
где про него популярно можно почитать?
В документации к компилятору.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Что в общем случае представляет собой "сишная библиотека"? Это файл dll+заголовочный файл?
Разделяемая библиотека — это и есть dll (Win) / so (*nix) / не-помню-какой-формат-в-OS-X / и т.д.
Заголовочный файл нужен для компиляции программы, использующей библиотеку. Для запуска программы он не нужен.
1
646 / 522 / 72
Регистрация: 20.09.2014
Сообщений: 3,356
04.02.2016, 05:33  [ТС] 7
Хорошо, по ключевому запросу "разделяемая библиотека" (или "динамически подключаемая библиотека") находит более релевантные описания в гугле, чем "сишная библиотека". Буду пытаться читать, вникать.

Требуется немного практических советов: как определить, что предоставляемый набор SDK/API можно использовать в конкретной среде разработке. Взять для примера Qt и Microsoft VS 201x Express. Операционная система Windows. При этом предоставлены библиотеки для:
1. Borland Delphi 6.0
2. Borland C 5.02
3. Borland C++ Builder 5.0
4. Microsoft Visual C++ 6.0
5. LabView 7.1
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
04.02.2016, 20:35 8
Цитата Сообщение от Mikhaylo Посмотреть сообщение
как определить, что предоставляемый набор SDK/API можно использовать в конкретной среде разработке.
После чётких и ясных ответов (#2 и #4) у вас осталась каша в голове. Попробую немного разъяснить в самых общих чертах.
1 Среды разработки здесь не у дел, от слова совсем. Всё, и даже больше можно сделать и вовсе без них.
2. Различают три основных уровня кода. 1) исходный код на языке программирования. 2) машинный код под определенную архитектуру и ОС определенной версии, требующий для работы заданный набор разделяемых библиотек нужных версий (разделяемая библиотека - тот же самый машинный код в формате so ,в Венде - dll, о которых шла речь). 3) байт-код - некий промежуточный код, по задумке переносимый, в реальности далеко не всегда, предназначенный для выполнения поверх виртуальной машины (используется в технологиях Ява и дот.нет).
3. Наилучшая переносимость - интерпретируемый язык. Потом - исходники компилируемого языка. Но даже в случае наличия исходников иногда проще переписать код заново, чем исправить для работы на другой платформе. Наихудшая переносимость - машинный код.
4. Что касается разделяемых библиотек. 1) подавляющее большинство из них пишутся на Си. 2) Использовать их могут программы, написанные на разных языках, в т.ч. интерпретируемых и компилируемых в байт-код. 3) Для использования необходима совместимость ABI. (Либо скомпилированной программы, либо интерпретатора, либо виртуальной машины)
2
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
05.02.2016, 15:44 9
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Есть ли такой стандарт и где про него популярно можно почитать?
Стоит начать с соглашение о вызове.
1
646 / 522 / 72
Регистрация: 20.09.2014
Сообщений: 3,356
07.02.2016, 07:02  [ТС] 10
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Стоит начать с соглашение о вызове.
Я почитал, по всей видимости, очень популярно соглашение о вызове cdecl, которое на низком уровне позволяет "общаться" двум программам, написанным на разных языках. Понимание о механизме взаимодействия возникло.

Цитата Сообщение от gng Посмотреть сообщение
Среды разработки здесь не у дел, от слова совсем. Всё, и даже больше можно сделать и вовсе без них.
Ну я привык работать в среде, у которой какой-то определенный встроенный компилятор под Win32.

Цитата Сообщение от gng Посмотреть сообщение
4. Что касается разделяемых библиотек. 1) подавляющее большинство из них пишутся на Си. 2) Использовать их могут программы, написанные на разных языках, в т.ч. интерпретируемых и компилируемых в байт-код. 3) Для использования необходима совместимость ABI. (Либо скомпилированной программы, либо интерпретатора, либо виртуальной машины)
Осталось разобраться в практической части. Как определить, сможет ли употребить MS VS 2013 Express или Qt библиотеку для Visual Studio 6.0?

Цитата Сообщение от gng Посмотреть сообщение
1) подавляющее большинство из них пишутся на Си.
Имеется в виду, что они пишутся на любом языке, но затем компилируются с использованием соглашений, принятых для языка Си?

Добавлено через 27 минут
Забыл сообщить: в Qt у меня используется компилятор MinGW.

Предоставляемая библиотека - это набор нескольких заголовочных файлов *.h, несколько *.cpp и один *.RH (это наверное какой-то ресурсный файл). Вполне вероятно, dll-ки лежат где-то в другом месте, т.к. библиотека представляет собой API.
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,470
07.02.2016, 13:26 11
Цитата Сообщение от Mikhaylo Посмотреть сообщение
сможет ли употребить MS VS 2013 Express или Qt библиотеку для Visual Studio 6.0
Сможет.

Цитата Сообщение от Mikhaylo Посмотреть сообщение
Предоставляемая библиотека - это
Это динамическая библиотека (dll файл). Если у Вас набор файлов с исходным кодом, то скомпилируйте его (например, используя mingw).
Если же Вы хотите использовать именно исходный код, то это уже другой случай.
0
07.02.2016, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2016, 13:26
Помогаю со студенческими работами здесь

Разбор чужого кода
В одном скрипте увидел такой фрагмент и как бы все знакомые ф-ции используются, но зачем так делать...

Разбор чужого кода
#include<iostream> #include<dos.h> #include<windows.h> void SetColor(int text) { HANDLE...

Разбор чужого кода
Здравствуйте, Форумчане. Учусь на 4 курсе, научный руководитель дал проект, который нужно...

Понимание чужого кода
Скажите, пожалуйста, есть какие либо правила, способы, подсказки как лучше всего разобраться в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru