2012-10-26 26 views
6

Với mẹ đẻ C++, ý tôi là, không được quản lý C++, không cli, không bất kỳ điều đặc biệt từ microsoft, tôi có thể:Tôi có thể sử dụng thuần khiết C++ để viết ứng dụng cho windows 8 metro không?

1) có được hiệu suất cao 2) sử dụng hiện có C++ mã thư viện và cơ 3) viết chéo mã nền tảng (ví dụ: đối với ios và android)

không cần phải có bản gốc hoàn toàn C++, tôi có thể sử dụng mã được quản lý để thực hiện những điều ui, như đối tượng c trong ios và java trong android, nhưng bên cạnh giao diện, thế nào tôi có thể sử dụng mã C++ bản địa?

+0

Có kiểm tra [nhà phát triển của Microsoft site] (http://msdn.microsoft.com/en-us/windows/apps/hh852650#Build_apps_using_what_you_know)? – Blazemonger

+0

Không có tàu điện ngầm chỉ zuul. Erm, tôi tin bây giờ nó được gọi là Giao diện người dùng mới. –

Trả lời

7

Tôi khuyên bạn nên xem bản trình bày tại đây: Using the Windows Runtime from C++ và đặc biệt là tại các nhận xét từ Herb Sutter. Tôi xin trích dẫn:

Hãy trả lời câu hỏi này: Nếu tôi quyết định viết C++ GUI ứng dụng trong phong cách Metro là tôi buộc phải sử dụng tất cả những ref độc quyền, niêm phong, ^, Bệ :: Chuỗi^mở rộng cho các thành phần GUI hay không?

@Tomas: Không, bạn không bị buộc phải sử dụng chúng. Chúng tôi đang cung cấp hai cách được hỗ trợ :

1) Các tiện ích mở rộng ngôn ngữ này (C++/CX).

2) Thư viện mẫu C++ (WRL), xem Bộ công cụ Windows \ 8.0 \ Include \ winrt \ wrl như Yannick đã đề cập. WRL là một giải pháp dựa trên thư viện C++ dựa trên thư viện của ATL, cung cấp những gì tôi nghĩ bạn đang tìm kiếm - mẫu wrapper/tiện lợi các lớp và con trỏ thông minh rõ ràng và như vậy.

3

Có bạn hoàn toàn có thể, thực sự có nguồn gốc C++ được hỗ trợ đầy đủ. Tuy nhiên, hầu hết bạn phải sử dụng các thư viện WinRT mới để thực hiện một giao diện người dùng hoặc các cuộc gọi hệ thống và mặc dù chúng là mã nguyên gốc và hoàn toàn có thể gọi từ C++ trực tiếp giao diện với chúng. là một tham chiếu tính đối tượng COM và ngoài ra nó không phải là dễ dàng như vậy để tạo ra các trường hợp của họ như chỉ cần gọi "mới", do đó bạn phải viết của mã xấu xí để làm như vậy.

Như câu trả lời trước đó cho biết, microsoft cung cấp hai cách để trợ giúp việc này. Một là thông qua phần mở rộng ngôn ngữ để C++ và khác là một thư viện mẫu C++. Cá nhân tôi coi cả hai đều khá xấu xí khi làm một cái gì đó đơn giản như gọi API nhưng đó chỉ là tôi :)

Nhưng để trả lời câu hỏi của bạn, bạn hoàn toàn có thể viết ứng dụng của mình bằng C++ gốc. Bạn sẽ không cần phải sử dụng mã được quản lý cho tất cả mọi thứ. Nhưng có thể bạn sẽ muốn sử dụng tiện ích mở rộng ngôn ngữ hoặc thư viện mẫu để gọi API dễ dàng hơn.

Cá nhân tôi hy vọng một ai đó viết một wrapper cho WinRT đó cho thấy nhiều các chức năng cần thiết nhất như một c thể sử dụng nhiều ++ thư viện bản địa và sau đó tất cả mọi người chỉ có thể sử dụng mà bạn từ C++ thay vì ...

+0

So sánh với iOS và Android, Windows rất nhiều phiền toái và phiền phức khi bạn phải sửa đổi mã nguồn C++ hiện tại của mình và viết hỗ trợ thời gian chạy, nếu dự án của bạn lớn trong C++, chỉ cần quên Windows Phone và không có người dùng nào . – CCC

Các vấn đề liên quan