Я хотел бы создать проект C# и реализовать существующий собственный (C++) код. Кто-нибудь знает о каком-либо хорошем руководстве об этом?Как использовать существующий код на C++ в .NET (C#)
Спасибо!
Я хотел бы создать проект C# и реализовать существующий собственный (C++) код. Кто-нибудь знает о каком-либо хорошем руководстве об этом?Как использовать существующий код на C++ в .NET (C#)
Спасибо!
Почему бы вам не попробовать управляемые обертки для кода на C++.
Если C++ код управляется (как вы говорите), то я полагаю, что вы оставить его в C++ если у вас есть очень веские основания - в будущем C# (и т.д.) сборки должны иметь возможность просто ссылаться на «как есть».
Возможно, самый простой способ сделать это - создать проект C++/CLI, который позволит вам смешивать управляемый и неуправляемый C++. Затем вы можете обернуть существующие неуправляемые классы C++ управляемой оболочкой .Net, которую ваш код C# может вызывать напрямую. Журнал MSDN имеет хороший вводный article на C++/CLI.
Взаимодействие действительно будет полезно только для вызова функций стиля C. Вы не можете использовать его для взаимодействия с чистыми классами C++.
Я узнал об этом, сделав это, поэтому у меня нет хорошего учебника, но есть пара вещей, которые вам нужно знать: управляемые C++ и C++/CLI интегрируются с неуправляемым кодом с очень небольшим количеством уродливых швов , Это не относится к C#. В управляемом C++, это вполне возможно сделать что-то вроде этого:
dotNetForm->Text = S"My Project"; // regular managed code
::SetWindowText(dotNetForm->Handle, "Your Project"); // mixed managed/unmanaged
, тогда как в C# вы должны P/Invoke в SetWindowText - не то, что вы на самом деле будет: это всего лишь простой пример, но вам нужно имейте в виду, что управляемый компилятор C++ - это странная комбинация, позволяющая вам делать много взаимодействия и прозрачно и ничего не делая для вас одновременно (т. е. он не будет подразумевать маскировку).
Я предполагаю, что реализовать существующий код, вы имеете в виду, что хотите называть его C# с минимальными изменениями кода C++.
Я поклонник и недавний покупатель книги C++/CLI in Action, в которой есть пара полезных примеров глав в Интернете.
Это intro on CodeProject является хорошей отправной точкой.
У автора C++/CLI в Action есть ряд статей по CodeProject, прокрутите вниз до раздела C++/CLI на his index.
Wikipedia article on P/Invoke имеет целый ряд причин, почему вы не можете использовать этот подход, с которым я согласен:
Лучшей отправной точкой на MSDN является summary article.
Хорошее место - я пропустил это и прочитал его как «существующий * un * управляемый (C++) код». Учитывая контекст, это может быть опечатка. –
Я нашел на опыте, что всегда стоит проверить очевидное первое - конечно, если это была опечатка, то много дали подходящие ответы –
моя ошибка ... это родная C++ –