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

Компилировал именно под 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# есть - в этом проблема.

прикольно, и вправду так работает. беру свои слова назад (насчет сырости) ))))))

1 лайк

Впредь не разводите сырости.

1 лайк

У меня Авира тоже не возбуждается. Это что-то от майкрософта гавкает.

Добрый вечер! Рад сообщить, что проблема решена. Дело было лишь в том, что после компиляции Pascal сохранял *.exe файл в иную директорию, где естественно не находил библиотеку dll. Изменил настройку опций компиляции, убрав галочку с пункта “Выходные файлы генерировать в папку”, работает корректно. PascalSuper Благодарю всех за помощь!

1 лайк

Понятно. Проекты конечно позволяют эту задачу решить - если их использовать, то dll копируется в папку с exe.

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

1 лайк

Добрый вечер!

Сейчас столкнулся еще с одной особенностью. Пробовал подключить dll, собранную под целевую платформу “Universal Windows Platform (UWP, Debug, x64)”, Pascal выдал ошибку:

"client.pas(1) : Ошибка при чтении сборки ‘ArduinoLibrary.dll’".

Сталкивались ли Вы с таким?

Думаю, что можно подключать только dll под платформу NET Framework.

А что - в C# можно такую dll подключить?

Да, подключить можно, но только к универсальному приложению (UWP).

При попытке подключить к .NET Framework/.NET Standart/.NET Core приложению выдает ошибку.

Тогда чему удивляться? PascalАВС.NЕТ использует фреймворк…

1 лайк

8 сообщений было перемещено в эту тему: Болталка PascalABC.NET