Tôi đang viết một ứng dụng nhỏ yêu cầu một vài hộp danh sách, các nút, hộp văn bản. Nó sẽ được liên kết với Boost, MySQL, vv. Dự án yêu cầu các hàm win32. Tôi con số Winforms sẽ được sử dụng tốt (MFC và CodeJock yêu cầu quá nhiều thời gian)..NET GUI - C# vs C++/CLI
Vì vậy, C + +/CLI có vẻ hoàn hảo cho công việc. Chỉ cần sử dụng tiêu chuẩn C++ bên cạnh GUI. Sau đó, tôi chạy qua chủ đề đề nghị bạn viết GUI của bạn trong C# thay thế. Sau đó, sử dụng giao diện p/Invoke (slow) hoặc C++/CLI cho C++ DLL chuẩn của bạn.
Ví dụ: http://social.msdn.microsoft.com/Forums/en-US/clr/thread/6ae877ac-07b4-4d26-8582-de475ee9a5cb
Tại sao? Những lợi thế là có trong việc sử dụng C# cho winforms GUI của bạn thay vì C + +/CLI (họ trông giống nhau, các lệnh đều giống nhau). Những bất lợi là có trong việc sử dụng C++/CLI thực thi thay vì thực thi chuẩn C++. Tôi có thể hiểu được nếu khả năng tương thích đa nền tảng là một vấn đề, nhưng sau đó bạn có thể chỉ đơn giản là không sử dụng các tính năng được quản lý (ngoài GUI).
Tôi không hiểu tại sao bạn sử dụng C# và sau đó đi xa đến mức để tách nó bằng "DLL động cơ". Trừ khi tất nhiên "DLL động cơ" đang được sử dụng cho các ứng dụng khác.
Cảm ơn
P/Gọi không chậm nếu được sử dụng đúng cách. Ứng dụng của chúng tôi là khoảng 30k dòng C# và 200k + của C++ được gọi với P/Invoke và nó quản lý các khung hình tương tác với hoạt ảnh/v.v. Bạn chỉ cần chắc chắn rằng giao diện của bạn giữa C# và DLL (s) được sạch sẽ và tối thiểu. –
@RonWarholic Tôi không quen thuộc với P/Invoke, nhưng không phải là nó tẻ nhạt để viết lại hoàn toàn các khai báo hàm của 200k dòng mã? – MasterMastic
Nếu bạn giữ API tiếp xúc của bạn sạch sẽ và chặt chẽ thì không có nhiều viết lại. Có hàng ngàn chức năng trong thư viện nhưng chỉ có 80 hoặc hơn được tiếp xúc với bên C#. –