Windows API и .net языки - PullRequest
       13

Windows API и .net языки

4 голосов
/ 07 февраля 2009

Люди всегда советовали мне, что если я делаю какое-то приложение, которое должно использовать некоторые API-интерфейсы Windows для выполнения какой-либо работы на уровне процесса, я должен использовать VC ++, а не любой другой язык .net.

Есть ли в этом правда?

Можно ли все, что можно сделать с помощью VC ++, сделать и на других языках .net?

Все ли языки .net одинаковы при сравнении их возможностей?

Ответы [ 3 ]

11 голосов
/ 07 февраля 2009

Если вам нужно работать с нативным кодом довольно тесно, C ++, вероятно, сделает жизнь проще. Однако нет ничего плохого в том, чтобы использовать P / Invoke для вызова Win32 API из C #, VB.NET, F # и т. Д.

Не все языки .NET одинаковы с точки зрения возможностей, хотя C # и VB.NET в значительной степени эквивалентны по функциональности. Я знаю, что есть некоторые вещи, которые предоставляет C ++ / CLI, которые не представлены C # или VB.NET - я не знаю, верно ли обратное. (Я не знаю, как выглядит C ++ / CLI для лямбда-выражений, методов расширения и т. Д.)

2 голосов
/ 07 февраля 2009

Когда я начал программировать в .Net, я использовал C ++ / CLI, так как пришел из минимального фона Win32 C ++. Я обнаружил, что у меня болит голова, потому что я не понимал тонких линий и границ между C ++ / CLI и Win32 C ++. Это не так просто, как кажется, что они взаимодействуют между ними. Когда я узнал о P / Invoke и сделал мою жизнь намного проще, я наконец начал совершенствовать свои навыки. P / Invoke просто отлично, и вам не обязательно нужен C ++ / CLI для этого. По моему мнению, вы либо используете Win32 C ++ полностью для низкоуровневых вещей, либо .Net для высокоуровневых вещей, и я действительно не рекомендую когда-либо пытаться взаимодействовать с Win32 C ++ с C ++ / CLI, если вам абсолютно не нужно Даже в этом случае, вероятно, проще сделать Win32 DLL с тем, что вам нужно, и P / Invoke DLL из .Net, или наоборот. Всегда не забывайте выбирать правильный инструмент для работы.

2 голосов
/ 07 февраля 2009

Для большинства задач, в которых библиотеки классов не предоставляют справку, обычно хорошо использовать P / Invoke. Есть много «грубых» API, которые получают выгоду от простой оболочки C ++ / CLI. Обычно лучше всего делать минимум кода в C ++ / CLI - эффективно маскировать то, что ниже уродства, для потребления C #, VB.NET и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...