0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|
1 | |
Импорт dll, нужен пример использования20.05.2017, 12:08. Показов 2430. Ответов 12
Есть некая dll.
Не могу найти информацию о том, как использовать вшитые там функции. [DllImport("fptr.dll")] А дальше? В примерах приписывается статический extern метод. А вот что дальше - не могу нагуглить. Буду благодарен за помощь.
0
|
20.05.2017, 12:08 | |
Ответы с готовыми решениями:
12
Нужен пример использования PostMessage Сортировка вставками: нужен пример использования Нужен пример использования интерфейсов и делегатов в одной программе Нужен пример использования вместо значений словаря — свои собственные классы |
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
|
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
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|
20.05.2017, 14:10 [ТС] | 7 |
Точно не перепутал. Пробовал и в debug тоже - все равно не видит(
0
|
0 / 0 / 1
Регистрация: 20.05.2017
Сообщений: 22
|
|
20.05.2017, 15:08 [ТС] | 9 |
Другие dll видит, эту - нет. Насколько я понимаю, это С++ dll, она отказывается импортироваться как ссылка. Может, проблема в этом? Может ли быть такое, что 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 (исходников нет) Вставляю так:
Хотя, вот есть fptr.h некий https://gist.github.com/pistol... 6bab65a690
0
|
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 | |
20.05.2017, 16:58 | |
Помогаю со студенческими работами здесь
13
Нужен пример подключения к конкретной DLL Нужен пример использования WhatsAppApi Нужен пример использования API в Вконтакте Пример использования ObservableCollection? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |