2009-08-22 35 views
7

Câu hỏi này đã được hỏi trước, nhưng tôi chưa bao giờ tìm thấy giải pháp thực sự thỏa mãn -Gọi C# từ C++ gốc, không có/clr hoặc COM?

Tôi có thư viện lớp được viết bằng C# và tôi muốn gọi nó từ ứng dụng gốc C++. Ứng dụng máy chủ thực sự là bản địa, được biên dịch trên Windows & Linux, một ứng dụng giao diện điều khiển của nó. Vì vậy, làm thế nào tôi có thể làm cho nó gọi là thư viện lớp C#, giả sử sử dụng Microsoft .NET trên Windows, và Mono trên Linux.

Tôi đã xem xét SWIG và gói với giao diện COM trên Windows, nhưng có giải pháp chuẩn được công nhận hoạt động trên nền tảng chéo không? tức là đó là chung chung, hoạt động với cả Microsoft .NET và Mono, viết một lần sử dụng ở mọi nơi triển khai.

Giải pháp nên hiển thị giao diện lớp đầy đủ từ miền C# tới miền C++.

câu hỏi tương tự chỉ tập trung vào các giải pháp Windows, ví dụ -

Call C# methods from C++ without using COM

+0

Bạn sẽ phải hỏi các bạn mono nếu, và làm thế nào, họ đã xuất khẩu điều đó. –

Trả lời

5

Nếu bạn muốn làm nền tảng này, tôi sẽ khuyên bạn nên đi với một cách tiếp cận 100% Mono.

Mono có sạch Embedding API hoạt động trên Linux và Windows.

+0

Câu trả lời hay, việc nhúng Mono trên Windows không thực sự là những gì tôi đang tìm kiếm, tất cả đều trông rất thủ công. Bạn sẽ phải viết rất nhiều mã tấm nồi hơi để lộ một giao diện đầy đủ đến một thư viện, nó trông tốn thời gian và mong manh, nhắc tôi về JNI. Tôi đã tự hỏi nếu có một số loại cách tự động, như SWIG hoặc chỉ lộ một giao diện COM. – titanae

+0

COM hoạt động tốt, nhưng không tốt trên Linux. SWIG chỉ tốt cho việc đi theo cách khác ... Xin lỗi. –