Это может быть очень конкретный c вопрос. Но это может быть интересно и некоторым другим людям.
Параметр может быть довольно распространенным: мы разрабатываем встроенное устройство с использованием C ++ и Linux и для этого имеем систему сборки. С нашим устройством мы поставляем настольное приложение C#, использующее механизм плагинов на основе DLL. Плагин содержит общую логику c, используемую как на встроенном устройстве, так и в приложении. Для простоты процессов было бы лучше создать DLL в нашей Linux системе сборки (следовательно, я хотел бы использовать. Net Core, а не «обычный». Net).
. как показал мой метод проб и ошибок, это невозможно - даже с. Net Core 3.1. Вы можете это подтвердить? Программное обеспечение предназначено только для windows (хотя оно скомпилировано на Linux) - так что теоретически это возможно с тех пор. Net Core поддерживает CLI / C ++ в версии 3.1 (https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/).
Что я пробовал:
- Я скомпилировал чистый C# код на Linux для исполняемого файла, успешно запущенного на windows, с помощью консольного приложения
dotnet
- Я успешно создал простое тестовое приложение C ++ / CLI на Windows, используя пример кода, следующий за этим руководством: https://devblogs.microsoft.com/cppblog/an-update-on-cpp-cli-and-dotnet-core/
- Наконец, я принял (вероятно, слишком наивный) подход для замены Протестируйте приложение .vcxproj с .csproj шага 1 (кажется, что .csproj автоматически определяет файлы). Я получил следующее сообщение об ошибке:
цитата CS C: ошибка CS5001: Программа не содержит stati c «Основной» метод, подходящий для точки входа [/ home / vagrant / Projects / cpp_dotnet_on_linux / cs_on_ linux .csproj]
Есть что-то, что я могу улучшить, или задача просто невозможна (добавление файлов cpp вручную в .csproj, ... )? Боюсь, это просто технически невозможно, потому что я думаю. Net В Core отсутствует компилятор C ++ на Linux, но я не уверен.