2012-06-22 19 views
31

Tôi đã làm việc với visual studio 2012 beta và chương trình máy tính để bàn (win32) của tôi được biên dịch tốt trong kiến ​​trúc ARM.Các chương trình máy tính để bàn ARM có thể được xây dựng bằng cách sử dụng studio trực quan 2012 không?

Sau khi nâng cấp lên visual studio 2012 RC, trình biên dịch sẽ không làm việc và spews ra lỗi sau:

"ứng dụng Biên dịch Desktop cho nền tảng ARM không được hỗ trợ"

Tôi tìm thấy một bài diễn đàn trên này http://connect.microsoft.com/VisualStudio/feedback/details/745580/arm-configuration-doesnt-work

Có đúng là Microsoft thực sự cắt đứt phát triển win32 trên ARM không? Và việc biên dịch trong bản thử nghiệm VS2012 chỉ là một sự biến đổi?

+2

Có, bạn đọc kết nối bài đăng chính xác. Windows RT (Windows 8 cho ARM) không hỗ trợ các ứng dụng máy tính để bàn của bên thứ ba. Như vậy, không có hỗ trợ cho việc phát triển chúng trong studio trực quan. – Jon

+0

Nếu bạn là người đăng ký MSDN hoặc có quyền truy cập vào Windows Phone/Mobile code, bạn nên xem cl.exe – sgupta

+0

Tôi đã có một DLL đang thực hiện việc này. Nếu tôi muốn sử dụng DLL đó trong một ứng dụng C# và XAML, nó vẫn là một "Ứng dụng Desktop"? – jocull

Trả lời

47

Bạn có thể chỉnh sửa tệp:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Platforms\ARM\Microsoft.Cpp.ARM.Common.props 

Trong phần <PropertyGroup> thêm dòng:

<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport> 

trước </PropertyGroup>

Và đó là tất cả, bạn có thể xây dựng các ứng dụng máy tính để bàn ARM với VS2012.

+0

Vui lòng kiểm tra xem tệp này có được mở trong chương trình khác hay không. Cách sửa đổi? – onmyway133

+0

@mamaich - Tôi không có ý nói thô lỗ, nhưng Microsoft có chấp nhận điều này không? (Tôi đang tìm một phương pháp được Microsoft chấp thuận để tránh lỗi vì đây là một dự án thực sự, chứ không phải là một bản hack giống như XDA (không có hành vi phạm tội với các thành viên XDA)). – jww

+0

Ah, điều này thật thú vị ... mẹo này chỉ sửa lỗi IDE. Nếu bạn rơi vào dòng lệnh, bạn vẫn gặp lỗi. Trong tầm nhìn sau, nó có ý nghĩa. – jww

3

có tất nhiên. tôi đã luyện tập với VS2012 RC. bây giờ tôi sẽ giải thích cách tránh "Soạn thảo các ứng dụng Desktop cho nền tảng ARM không được hỗ trợ" và xây dựng ứng dụng win32.

cách 1: sửa chữa xây dựng công cụ - mục đích là để vá (hoặc cố gắng để thay thế nó bằng một phiên bản beta của) lib MSBuild của: Microsoft.Build.CPPTasks.Common.v110.dll

Cách 2: chạy " VS2012 ARM Cross Công cụ Command Prompt "từ Visual Studio Tools bắt đầu trình đơn, sau đó thực hiện cl [cl params] myfile1.cpp myfile2.cpp myres.res .../link [linkparams]

cho cả hai trường hợp này bạn cũng cần commentout một chỉ thị #error trong crtdefs.h trên dòng 332. (Microsoft Visual Studio 11.0 \ VC \ include)

9

Tôi có thể gặp lỗi đó và biên dịch một tệp cpp "hello world" nhỏ cho ARM bằng cách thêm đối số dòng lệnh "/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE" vào phiên bản ARM của cl tại C: \ Program Files (x86)) \ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm. Tôi thấy rằng #define từ câu trả lời của sn0w về câu hỏi này trong tệp crtdefs.h, mà không phải sửa đổi tệp đó. Bây giờ, tôi không thể đảm bảo rằng bất cứ điều gì phức tạp hơn sẽ thực sự hoạt động, hoặc Microsoft đã không thiết lập một số loại xác minh danh sách trắng hoặc chữ ký số cho các ứng dụng máy tính để bàn Windows RT, vì vậy mặc dù nó có thể biên dịch, nó có thể không được phép chạy khi Windows RT cuối cùng cũng có sẵn.

Lưu ý rằng trước khi bạn có thể chạy phiên bản ARM của cl.exe từ dòng lệnh, bạn phải đặt biến môi trường bằng cách sử dụng tệp lô này: "C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ x86_arm \ vcvarsx86_arm.bat "

+2

Chỉ cần chọn nit: khi sử dụng mẹo của mamaich để biên dịch trong Visual Studio, VS áp dụng '/ D _ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE = 1'. – jww

4

Ngay cả khi bạn biên dịch ứng dụng, bạn sẽ không thể chạy ứng dụng trên Windows 8 RT vì ứng dụng chưa ký sẽ không bắt đầu.

Tôi vừa thử nghiệm điều này và rất tiếc là trường hợp này xảy ra.

Bạn nhận được thông báo sau:
Windows cannot verify the digital signature of this file

Tôi tưởng tượng có lẽ là một việc xung quanh cho điều này, nhưng nó sẽ không bao giờ được chính thức được hỗ trợ.

+1

Có một số chi tiết ở đây, về phía dưới cùng, về giải pháp có thể cho việc này ... http://forum.xda-developers.com/showthread.php?p=31519618&postcount=1 –

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