Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
1

Импорт dll, нужен пример использования

20.05.2017, 12:08. Показов 2430. Ответов 12

Author24 — интернет-сервис помощи студентам
Есть некая dll.
Не могу найти информацию о том, как использовать вшитые там функции.

[DllImport("fptr.dll")]

А дальше? В примерах приписывается статический extern метод. А вот что дальше - не могу нагуглить. Буду благодарен за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2017, 12:08
Ответы с готовыми решениями:

Нужен пример использования PostMessage
Написал на С++ прогу что бы слала нажатия клавиш методом PostMessage)) все прекрасно работает....

Сортировка вставками: нужен пример использования
Добрый день. Помогите пожалуйста кодом для сортировки вставками=) Заранее благодарю =)

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

Нужен пример использования вместо значений словаря — свои собственные классы
Только начал изучать класс словарей Dictionary, и не могу нигде найти примеров использования вместо...

12
Эксперт .NET
10574 / 6498 / 1506
Регистрация: 25.05.2015
Сообщений: 19,685
Записей в блоге: 14
20.05.2017, 12:47 2
Безопасное получение хэша пароля, заданного через указатель из SecureString
http://www.pinvoke.net/ - тонны примеров объявлений функций из WinAPI.
0
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 12:56  [ТС] 3
Это уже следующий шаг, наверно Сейчас я не понимаю в целом, как это работает. Вот, сделал я импорт. Далее, я должен объявить статическую функцию, имя которой совпадает с какой-то вшитой в dll функцией? Это чисто интуиция программиста очень далекого от десктопа и Windows, понятного объяснения принципа не могу найти.
0
Эксперт .NET
10574 / 6498 / 1506
Регистрация: 25.05.2015
Сообщений: 19,685
Записей в блоге: 14
20.05.2017, 13:09 4
Ну в общем да, так. Только сначала определяется импортируемая функция, к которой добавляется атрибут DllImport, указывающий параметры импортирования.
Интуицией можете поизучать и сравнить известные определения WinAPI функций и их импорт, показанный на сайте pinvoke.
Теоретическую часть можете посмотреть в книге C# 6.0 in a Nutshell Албахари, глава 25 "Interoperability". Литература по C# для начинающих и не только
1
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 14:04  [ТС] 5
Спасибо. А dll сам класть просто в корень с exe? ..projectPath\bin\Release\file.dll?

Файл там существует, но выдается ошибка "$exception {"Не удается загрузить DLL "fptr.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)"} System.DllNotFoundException"
0
Эксперт .NET
10574 / 6498 / 1506
Регистрация: 25.05.2015
Сообщений: 19,685
Записей в блоге: 14
20.05.2017, 14:07 6
В простейшем случае рядом с той сборкой, которая пытается импортировать метод.
Но есть способы и в другом каталоге разместить.
Вы могли debug и release попутать.
0
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 14:10  [ТС] 7
Точно не перепутал. Пробовал и в debug тоже - все равно не видит(
0
Эксперт .NET
10574 / 6498 / 1506
Регистрация: 25.05.2015
Сообщений: 19,685
Записей в блоге: 14
20.05.2017, 14:13 8
Что-то явно перепутали. Скачайте пример из 2 поста. Сравните.
0
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 15:08  [ТС] 9
Другие dll видит, эту - нет. Насколько я понимаю, это С++ dll, она отказывается импортироваться как ссылка. Может, проблема в этом? Может ли быть такое, что dll нельзя использовать в C#?
0
Эксперт .NET
10574 / 6498 / 1506
Регистрация: 25.05.2015
Сообщений: 19,685
Записей в блоге: 14
20.05.2017, 15:12 10
Проекты c/c++ dll и C# с исходниками приложите. Может кто посмотрит.
0
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 15:26  [ТС] 11
https://github.com/pistol88/dvizh-seller
DLL: http://graphing.ru/data/fptr.dll (исходников нет)

Вставляю так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
    public partial class CashierForm : Form
    {
//...
        [DllImport("fptr.dll")] public static extern int Beep();
 
        public CashierForm()
        {
            CashierForm.Beep();
//Здесь возникает ошибка, что DLL не найден
Добавлено через 5 минут
Хотя, вот есть fptr.h некий https://gist.github.com/pistol... 6bab65a690
0
Эксперт .NET
6452 / 4053 / 1599
Регистрация: 09.05.2015
Сообщений: 9,487
20.05.2017, 15:27 12
У вашей длл есть зависимости в виде libgcc_s_dw2-1.dll, mingwm10.dll (а у этих зависимостей так же могут быть свои зависимости), они установлены в систему или лежат рядом с длл?
1
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 16:58  [ТС] 13
Спасибо! Переместил недостающие DLL файлы, проблема решена
Но теперь такое:
"System.AccessViolationException: "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

Добавлено через 43 секунды
Тут уже что-то с типами, судя по Гуглу, пойду вникать в доки.

Добавлено через 1 час 24 минуты
Чудики, которые страдают той же проблемой, что у меня: я справился. Эта dll визжит как *****, когда ее трогают. Но можно просто добавить ссылку на C:\Program Files (x86)\ATOL\Drivers\Bin\FprnM1C.dll в проект и создавать нужный объект так:

cmd = new FprnM1C.FprnM45();
0
20.05.2017, 16:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2017, 16:58
Помогаю со студенческими работами здесь

Нужен пример подключения к конкретной DLL
Доброго времени суток. Все ноги истоптал при подключении DLL в проекте с C#, последняя надежда на...

Нужен пример использования WhatsAppApi
подскажите как работать с данной библиотекой Добавлено через 16 часов 35 минут что некто не...

Нужен пример использования API в Вконтакте
Всем привет, очень нужен пример использования API в вк. Хотя бы добавление записи на стену и если...

Пример использования ObservableCollection?
Прошу помочь разобраться с ObservableCollection. ObservableCollection предоставляет...


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

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