2012-04-26 8 views
6

Tôi có một ứng dụng C++ mà từ đó tôi muốn gọi các phương thức .NET (C#). Tôi sẽ sử dụng C++/CLI, nhưng nó chỉ được hỗ trợ trên Windows.Làm cách nào để gọi .NET từ C++ theo cách độc lập với nền tảng có thể

Vì chúng tôi cũng hỗ trợ MAC, tôi muốn gọi .NET từ C++ theo cách sẽ hoạt động trên cả Windows và Mac (với Mono).

Cách tốt nhất để làm điều này là gì?

EDIT: Tôi nên thêm mã C# mà chúng tôi muốn gọi không phải là của chúng tôi. Chúng tôi không có cách nào thay đổi nó. Mã C++, tất nhiên, là của chúng ta.

+0

Câu hỏi hay. Tôi tò mò muốn xem mọi người nghĩ ra điều gì. –

+0

Tôi tự hỏi, Mac/Mono có hỗ trợ DCOM không? – wilx

+1

Một giải pháp có thể là để mô phỏng RPC bằng cách sử dụng [Bộ đệm giao thức của Google] (https://developers.google.com/protocol-buffers/) cùng với các ổ cắm. Bộ đệm giao thức có [Triển khai .NET] (http://code.google.com/p/protobuf-net/). – megabyte1024

Trả lời

1

Cách dễ nhất là để hiển thị chức năng thông qua con trỏ hàm. Cả hai. Net và mã nguồn gốc có thể tương tác với mã C/C++ dưới dạng một con trỏ hàm. Các con trỏ hàm được hỗ trợ trên tất cả các nền tảng mà mã C++ chạy vì thế nó có thể được viết mà không cần bất kỳ sự hiểu biết nào về .Net.

+0

+1: Tôi biết bạn sẽ được tất cả trong này :) –

+0

Cảm ơn bạn có thể chỉ cho tôi một số ví dụ tốt/hướng dẫn? –

+0

@AndrewS thuật ngữ để sử dụng trong tìm kiếm là "Reverse PInvoke". Dưới đây là một vài bài viết về chủ đề http://msdn.microsoft.com/en-us/magazine/cc164193.aspx http://blogs.msdn.com/b/davidnotario/archive/2006/01/13/ 512436.aspx – JaredPar