| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Подключение dll файла |
| Автор: kma 28.12.2005, 16:21 |
| Есть “dll” файл, написанный на С++, подскажите, пожалуйста, как его можно подключить к своему проекту. Если можно дайте пример. Зарине спасибо. |
| Автор: mr.DUDA 28.12.2005, 16:59 |
| Есть такой атрибут [DllImport("mylib.dll")], ставим его над статическим методом (имя метода при этом совпадает с именем какой-нить ф-ции экспортируемой из длл) и пользуемся "как своим родным" методом класса. Типы аргументов - соответствующие: для int, double, bool, float - остаются как есть; строки типа char* и short* "как по волшебству" превращаются в string; структуры передаются как есть; указатели - через IntPtr. |
| Автор: kma 28.12.2005, 17:10 |
| Спосибо за помощь Я подключил системный файл “[DllImport("Kernel32.dll")]” и вызвал функцию “protected static extern IntPtr CreateFileA” . Пишет, что эта функция закрыта, что делать |
| Автор: mr.DUDA 28.12.2005, 17:27 | ||
Наверное, не надо указывать букву "А" или "W" в конце имени ф-ции, т.к. рантайм сам определит, какой вариант функции - юникодовский или ANSI'шный - использовать при вызове. Вот как ф. CreateFile используется в System.Microsoft.Win32.NativeMethods:
|
| Автор: kma 28.12.2005, 17:37 |
| Попробовал, но все равно пишет “new protected member declared in sealed class” |
| Автор: mr.DUDA 28.12.2005, 18:08 | ||
Эта ошибка не относится к DllImport, скорее всего просто класс, объявивший метод CreateFile, унаследован от sealed-класса. Нужно либо убрать наследование вообще, либо унаследоваться от другого класса. |
| Автор: kma 28.12.2005, 18:14 |
| Я свой класс не от кого не наследовал |
| Автор: mr.DUDA 28.12.2005, 18:25 | ||
Код рабочий, файл создаёт:
|