OberonCore https://forum.oberoncore.ru/ |
|
Написать DLL, которая будет вызываться из программы на C++ https://forum.oberoncore.ru/viewtopic.php?f=35&t=4997 |
Страница 1 из 1 |
Автор: | kolesiko [ Суббота, 22 Февраль, 2014 01:13 ] |
Заголовок сообщения: | Написать DLL, которая будет вызываться из программы на C++ |
Некая программа написана на нативном (не CLI) C++ в среде Visual Studio 2005. К ней надо сделать плагин. Возможно ли такое, и если да, то как? Какой язык для этого лучше использовать? У меня есть пример плагина на C++, но перспектива дописывать его на этом языке вгоняет меня в депрессняк. Я точно знаю, что один из плагинов для этой программы сделан на языке Ruby (для этого сначала реализовали промежуточную DLL на C++, которая вызывается и из основной программы, и из скрипта на Ruby). Понятно, что так можно и на VBA написать, но хотелось бы нативно скомпилировать. Платформа Windows 7+ 32-bit. Особых требований к языку нет. Меня бы и FreePascal устроил, но он криво DLL генерирует. А мне надо надежно. Не хочу потом ловить гейзенбаги и думать, куда утекает память. Может, стоит Modula-2 использовать? Я где-то слышал, что DLL лучше писать на языках без GC. |
Автор: | Александр Ильин [ Суббота, 22 Февраль, 2014 07:24 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
viewtopic.php?f=30&t=1037 viewtopic.php?f=30&t=2205 viewtopic.php?f=30&t=2027 Те плагины, что попроще, сделаны без GC и даже без Runtime, а те, что посложнее, используют GC, так что примеры всего спектра возможностей есть в исходниках. См. также http://sourceforge.net/apps/mediawiki/n ... in_Central (поиск по строке "Alexander Iljin"). Целевая программа (для которой плагины) - Notepad++, написана на нативном C++ в Visual Studio. |
Автор: | kolesiko [ Суббота, 22 Февраль, 2014 08:36 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
Александр Ильин писал(а): Те плагины, что попроще, сделаны без GC и даже без Runtime, а те, что посложнее, используют GC, так что примеры всего спектра возможностей есть в исходниках. См. также http://sourceforge.net/apps/mediawiki/n ... in_Central (поиск по строке "Alexander Iljin"). Целевая программа (для которой плагины) - Notepad++, написана на нативном C++ в Visual Studio. Спасибо! Заодно решился вопрос, какой редактор лучше использовать. Я посмотрел исходник Oberon-2 Lexer (пару файлов по диагонали) и заметил слово ASSERT. Это контрактное программирование? А юнит-тесты применяете? |
Автор: | Евгений Темиргалеев [ Суббота, 22 Февраль, 2014 18:13 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
См. blackbox15i21base/i21sys : Код: Code
Docu Docu.Полезные сведения Docu.Работа с DLL Mod Rsrc Sym |
Автор: | Александр Ильин [ Суббота, 22 Февраль, 2014 22:27 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
kolesiko писал(а): Я посмотрел исходник Oberon-2 Lexer (пару файлов по диагонали) и заметил слово ASSERT. Это контрактное программирование? А юнит-тесты применяете? Я плохо представляю, что такое контрактное программирование. ASSERT'ами я часто пресекаю вызов публичных функций с некорректными параметрами, либо защищаюсь от собственных ошибок, когда плохо понимаю, что пишу, либо когда нужно выразить какое-то согласование между частями программы, которое не выражается на данном языке программирования. Это чтобы при изменении и расширении чего-либо в будущем не позабыть, на каких условиях работает уже имеющееся.В моих плагинах, по-моему, нет юнит-тестов, но вообще на при работе на Oberon-2 я автоматические тесты внедрял и использовал довольно активно. |
Автор: | Info21 [ Суббота, 22 Февраль, 2014 23:05 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
Юнит-тесты это в модульной системе понятие ... ну, избыточное. Для каждого модуля пишутся тесты, и всё. Ведь каждый модуль представляет некую абстракцию, которая может отдельно и независимо от всего прочего тестироваться. Контрактное программирование -- тоже некое избыточное понятие. Неконтрактное программирование -- это не программирование, а так ... чмо. Для каждой процедуры есть пред- и пост-условия. На всё втыкаются АССЕРТы на уровне инстинкта. Я детишкам в самом начале логики показываю фрагмент из "Леона": -- Проверь. Убедись, что это именно то, что тебе нужно. -- Я тебе доверяю. -- Не путай одно с другим, Леон! |
Автор: | kolesiko [ Воскресенье, 23 Февраль, 2014 23:56 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
Александр Ильин писал(а): Я плохо представляю, что такое контрактное программирование. ASSERT'ами я часто пресекаю вызов публичных функций с некорректными параметрами, либо защищаюсь от собственных ошибок, когда плохо понимаю, что пишу, либо когда нужно выразить какое-то согласование между частями программы, которое не выражается на данном языке программирования. Это чтобы при изменении и расширении чего-либо в будущем не позабыть, на каких условиях работает уже имеющееся. Это оно и есть. |
Автор: | Роман М. [ Понедельник, 24 Февраль, 2014 15:51 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
Задачей ASSERT является проверка данных параметров во время исполнения программы, в то время как проверкой типов параметров занимается компилятор на этапе компиляции модуля КП. Info21 писал(а): Юнит-тесты это в модульной системе понятие ... ну, избыточное. Для каждого модуля пишутся тесты, и всё. Ведь каждый модуль представляет некую абстракцию, которая может отдельно и независимо от всего прочего тестироваться. Контрактное программирование -- тоже некое избыточное понятие. Неконтрактное программирование -- это не программирование, а так ... чмо. Для каждой процедуры есть пред- и пост-условия. На всё втыкаются АССЕРТы на уровне инстинкта. Я детишкам в самом начале логики показываю фрагмент из "Леона": -- Проверь. Убедись, что это именно то, что тебе нужно. -- Я тебе доверяю. -- Не путай одно с другим, Леон! ASSERT и есть проверка соответствия контракту, при нарушении которого программа завершается нештатным образом. |
Автор: | Info21 [ Понедельник, 24 Февраль, 2014 20:11 ] |
Заголовок сообщения: | Re: Написать DLL, которая будет вызываться из программы на C |
Роман М. писал(а): ASSERT и есть проверка соответствия контракту, при нарушении которого программа завершается нештатным образом. Правда?!
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |