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

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

20.05.2017, 12:08. Показов 2797. Ответов 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
13007 / 7606 / 1663
Регистрация: 25.05.2015
Сообщений: 23,144
Записей в блоге: 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
13007 / 7606 / 1663
Регистрация: 25.05.2015
Сообщений: 23,144
Записей в блоге: 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
13007 / 7606 / 1663
Регистрация: 25.05.2015
Сообщений: 23,144
Записей в блоге: 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
13007 / 7606 / 1663
Регистрация: 25.05.2015
Сообщений: 23,144
Записей в блоге: 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
13007 / 7606 / 1663
Регистрация: 25.05.2015
Сообщений: 23,144
Записей в блоге: 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,569
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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru