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

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

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

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

[DllImport("fptr.dll")]

А дальше? В примерах приписывается статический extern метод. А вот что дальше - не могу нагуглить. Буду благодарен за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2017, 12:08
Ответы с готовыми решениями:

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

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

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

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

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

Вставляю так:
C#
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
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
20.05.2017, 15:27
У вашей длл есть зависимости в виде libgcc_s_dw2-1.dll, mingwm10.dll (а у этих зависимостей так же могут быть свои зависимости), они установлены в систему или лежат рядом с длл?
1
 Аватар для pistol88
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
20.05.2017, 16:58  [ТС]
Спасибо! Переместил недостающие DLL файлы, проблема решена
Но теперь такое:
"System.AccessViolationException: "Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

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

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

cmd = new FprnM1C.FprnM45();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2017, 16:58
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru