Не загружает dll

Подскажите, что Вы сделали, после чего ушла ошибка? Необходимо как-то необычно переустанавливать IDE, руками удалять файлы? Откуда Вы скачали новый релиз? Версия с офф. сайта выдает те же ошибки и сегодня с утра.

Давайте разбираться. Предыдущая версия выдавала ошибку “не могу найти dll” если она подключалась в проекте. Версия, скачанная мной с сайта, эту ошибку не выдаёт.

Приведите конкретный пример того, что не работает, по шагам. С кодом и картинками.

Добрый день! Так как новые пользователи на форуме не могут добавлять более одного файла, все скрины вкладываю в Google-диск, а в тексте указываю имена файлов, на которые ссылаюсь)

Тестовую библиотеку со следующим содержимым необходимо подключить к проекту PascalABC.NET:

Файл: Library_Code

В VS также был создан проект клиента, пользователя библиотекой. Как видно ниже, библиотека подключается и работает корректно.

Файл VS_Well_Done

Подключая эту же библиотеку в проект Pascal появляется парадокс, IDE предлагает выбрать метод класса Class1, который реализован в библиотеке, но на этапе выполнения выдает описанную выше ошибку:

Файл PascalError

Стоит отметить, что файл BABCClient.pas находится в одной директории с файлом ArduinoToPascal.dll.

Меня до сих пор не покидает чувство, что я скачиваю IDE не по тем ссылкам, что и Вы. Я скачиваю по нажатию на эту кнопку:

Файл IDE_Load

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

Никакие из ваших картинок на форуме не отображаются.

Выложите куда-нибудь исходники проекта.

Библиотека dll откуда взялась? Вы её компилировали под VS или взяли откуда-то?

Я даже не пойму, откуда вы скачивали - на форуме это всё не отображается

Повысил вам на форуме уровень доверия - пробуйте

Я бы ему не доверял. И не нужно доверять компилятор сторонним разработчикам. Как говорится, у семи нянек дитя без глаза. Лучше сделать меньше. да лучше, чтобы не переписывать программы после каждого коммита (не знаю, что это такое, но слово хорошее - грех не ввернуть).

я как понял PascalABC Net еще сырой проект

очень жаль

Переписываю свое сообщение уже с изображениями (в тот раз изображения лежали на Google-диске)

Тестовую библиотеку со следующим содержимым необходимо подключить к проекту PascalABC.NET:

Library_Code

В VS также был создан проект клиента, пользователя библиотекой. Как видно ниже, библиотека подключается и работает корректно.

Подключая эту же библиотеку в проект Pascal появляется парадокс, IDE предлагает выбрать метод класса Class1, который реализован в библиотеке, но на этапе выполнения выдает описанную выше ошибку:

PascalError

Стоит отметить, что файл BABCClient.pas находится в одной директории с файлом ArduinoToPascal.dll.

Меня до сих пор не покидает чувство, что я скачиваю IDE не по тем ссылкам, что и Вы. Я скачиваю по нажатию на эту кнопку:

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

Библиотека почти пустая, содержит только лишь функцию суммы, компилировалась под VS. По поводу скачивания скрин выше.

Нет, скачиваете правильно. Собственно, неважно откуда. Это работает везде.

Пришлите исходные коды. Всё работает. Вот проект:

ErrArdDll.zip (1,9 КБ)

Кстати, обращаю ваше внимание, что если вы создаёте только 32-битную dll на 64-битной системе, то действительно работать не будет. PascalABC.NET создаёт в этом случае 64-битный код, и он не может загрузить 32-битную сборку.

А скажите, где происходит считывание данных из xml-файла? Там вроде нет собственно считывания. Потому и данные видимо не отображаются.

А так- да, конечно, всегда виноват компилятор ))

Кстати, у вас в коде неточность - вы обращаетесь к индексному свойству, а в PascalABC.NET в классе допустимо только одно индексное свойство. Поэтому надо точку 0,0 обернуть вызовом new Position(0,0). Тогда всё откомпилируется

Компилировал именно под 64-битную версию. Исходные коды (38,3 КБ) прикрепляю. (Pascal-файл лежит в …\bin\x64\Release)

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

На всякий случай прикрепляю сведения о системе:

Проверил на другой машине - не работает. Параметры:

Ну у нас тут огромная сборка HelixToolkit.Wpf.dll вмонтирована - на ней модуль Graph3D целиком работает. А попробуйте откомпилировать стандартный модуль Graph3D.pas в папке LibSource

И посмотрите - не включён ли у вас антивирус и не блокирует ли он по случаю что-то?

Ощущение, что сборку кто-то держит. Или она не может загрузиться из-за политик безопасности.

То есть, это работает 10 лет как, у нас - везде, во всём зоопарке компьютеров мехмата. Так что то, что у вас не работает, да еще на двух машинах - это странно. У меня пока нет версий.

Все развивающиеся проекты сырые. Переходите на ТурбоПаскаль. Там всё сухо!

У меня на Win10 работает без проблем. У Вас что-то в настройках компа не то или антивирусник попробуйте на время отключить - они бывают злые.

Windows 7. Kaspersky Endpont Seсurity 10. Совсем не злой. Сидит тихо и не возбуждается бестолку.

Попробуйте запустить такой код:

begin
  var a := System.Reflection.Assembly.Load('ArduinoLibrary');
end.

Если и он не будет работать, то смотрите у себя, в чем дело.

А как он работает без $reference ? Но ведь работает!

Это динамическая загрузка сборки

не совсем понятно Вы объяснили мне, где собственно нужно обернуть в new position? Как я понял мне нужно обернуть в new position вот эту строку: data1[0,0] := new SourceGrid.Cells.ColumnHeader(‘№’); ? Не подскажите на примере как это сделать?)

Я исправил вот так:

data1.Item[new SourceGrid.Position(0, 0)] := new SourceGrid.Cells.ColumnHeader('№'); 

В Delphi, который мы брали за основу, нет перегруженных индексированных свойств. И у нас нет (

А в C# есть - в этом проблема.

 Институт математики, механики и компьютерных наук ЮФУ, 2005–2021
Администрация форума: В.Н. Брагилевский, С.С. Михалкович, А.М. Пеленицын
Yandex.Metrica