![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| myendlessness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
Всем доброго времени суток!
Ребята подскажите, пожалуйста, у меня есть C# проект и есть десяток файлов написанных на С. Я добавил С файлы в С#-проект а теперь надо как-то использовать те библиотеки, которые написаны на С, что необходимо сделать, как перекомпилировать или может есть другие возможности? Спасибо за помощь! |
|||
|
||||
| DVariuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: 5 Всего: 8 |
myendlessness, если библиотека на С - компиль ее отдельно, а в коде C# юзай DllImport для импорта функций.
|
|||
|
||||
| myendlessness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
Спасибо за рекомендацию. Только сейчас понял, что неправильно выразился, на C у меня есть файлы с расширением *.h,*.c именно эти файлы я добавил в C# проект, а теперь в моём С# проекте нужно использовать некоторые функции из фалов написанных на С.
|
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 13 Всего: 49 |
myendlessness, компиль эти .c/.h файлы в отдельную dll, и подключай ее через DllImport, как тебе посоветовали выше.
C и C# - два совсем разных языка под две разные платформы. в них только скобки одинаковые. |
|||
|
||||
| myendlessness |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
Ребята сделал всё как описано в МСДН получил два файла H and CPP:
H file is:
CPP file is:
Скомпилировал, получил библиотеку DLL Затем пишу в своём C# проекте: [DllImport("D:/Visual Studio 2008/Projects/EncoderDecoder_1/EncoderDecoder_1/bin/MathFuncsDll.dll", EntryPoint = "MathFuncs", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] public static extern bool MyAdd(int a, int b); дальше пытаюсь сложить два числа int a = 9; int b = 10; MyAdd(a, b); И в итоге выдаёт, что неправильная EntryPoint, подскажите, пожалуйста, что считается EntryPoint и как правильно мне использовать функции? Читал МСДН, но пока не могу догнать, что именно надо писать в EntryPoint! Добавлено через 13 минут и 19 секунд Да ещё заметил, что int нужно поменять на double, а то это ошибка! Но всё равно не хочет работать. public static extern double MyAdd(double a, double b); дальше пытаюсь сложить два числа double a = 9; double b = 10; double c; c = MyAdd(a, b); - вылетает здесь? |
||||
|
|||||
| myendlessness |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
В общем разобрался! По крайней мере понял как реализовать одним из способов! Значит нужно написать следующим образом: EntryPoint="#1" и тогда всё работает, то есть пишем # и порядковый номер функции в библиотеке, если например нужен Multiply, то пишем EntryPoint="#3" Спасибо Всем кто помагает |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: 2 Всего: 34 |
myendlessness, а причем тут С++? Ты же вроде про С# говорил вначале?
Ты мог такую же библиотеку на С написать. Это сообщение отредактировал(а) Mephisto - 12.6.2009, 19:28 |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 11 Всего: 92 |
У тебя там неймспейс, да ещё и класс - в итоге, конечно, имя функции получается ужасным (можно посмотреть любой утилитой, показывающей таблицу экспорта). |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |