Отмените PInvoke и создайте полностью неуправляемую программу на C # - PullRequest
3 голосов
/ 11 мая 2010

Я знаю, что это странный вопрос, но идея проста: я предпочитаю синтаксис C #, а не C ++: Сетки и добытчики прямо внутри объекта -интерфейс заявление -возможность объявить неявный оператор приведения

другие мелочи ...

Чего я действительно не знаю, так это возможности импорта dll c ++ (особенно библиотеки std) в C #, если я не использую пространство имен (даже System)

Идея состоит в том, чтобы написать программу, использующую все, что вы обычно используете в C ++ (ничего из CLR), даже printf, например

Спасибо за любой ответ

Ответы [ 3 ]

3 голосов
/ 11 мая 2010

Нет, невозможно просто импортировать существующие файлы C или C ++ в проект C #. Они очень разные языки и не могут быть смешаны на исходном уровне.

Способ смешивания приложений на C # и C ++ / C находится на уровне PInvoke или COM Interop. Это работает путем дублирования сигнатур в C # и предоставления компилятору C # возможности определять двоичную компоновку нативного типа для маршалинга между языками.

1 голос
/ 02 декабря 2014

Там сейчас что-то близко к этому

.NET Native компилирует C # в собственный машинный код, который работает как C ++. Вы по-прежнему будете получать выгоду от продуктивности и знакомства с .NET Framework с отличной производительностью нативного кода.

Это только для приложений Магазина Windows (настольные приложения могут появиться в будущем):

Настольные приложения - очень важная часть нашей стратегии. Сначала мы ориентируемся на приложения Магазина Windows с .NET Native. В долгосрочной перспективе мы продолжим улучшать собственную компиляцию для всех приложений .NET.

И

приложения будут развернуты на устройствах конечного пользователя в виде полностью автономного нативно скомпилированного кода (когда .NET Native входит в производство) и не будут зависеть от .NET Framework на целевом устройстве / машине

0 голосов
/ 11 мая 2010

Нет; это невозможно напрямую. В частности, шаблоны C ++ не поддерживаются C #.

...