2012-05-17 32 views
5

Tôi đang viết một trình bao bọc cho các phương thức C++ gốc của tôi trong C++/CLI, nó sẽ hiển thị chúng cho C#. Bây giờ tôi đang sử dụng Visual Studio 2008. Có thể bất kỳ một cho tôi biết loại dự án tôi cần phải tạo ra để wrapper của tôi sẽ được tiếp xúc với C#. Tôi thấy trong Visual Studio 2008 có các loại dự án khác nhau trong Visual C++ ---> CLR ---->Loại dự án nào cần được tạo cho C++/CLI?

class library, 
CLR Empty Project, 
Windows form control library, 
CLR Console Application, 
Windows Forms Application, 
Windows Service 

Tôi nên sử dụng cái nào?

Trả lời

6

Bạn phải tạo dự án loại Thư viện lớp. Điều quan trọng nhất là chỉ định tùy chọn "Hỗ trợ Thời gian Ngôn ngữ Chung" (được đặt thành "Hỗ trợ Thời gian Hỗ trợ Ngôn ngữ Chung (/ clr)") trong Thuộc tính Dự án -> Thuộc tính Cấu hình -> Chung

Điều này sẽ cho phép bạn sử dụng số

#pragma managed 
... use your native stuff here 
#pragma unmanaged 

pragmas và liên kết với tệp .lib gốc.

Xem liên kết này để biết chi tiết tinh tế

http://www.codeguru.com/cpp/cpp/cpp_managed/interop/article.php/c6867/Consuming-Unmanaged-C-Class-Libraries-from-NET-Clients.htm

Có một catch (không được đề cập trong bài viết này) cho 64-bit được xây dựng. Tham chiếu "Linker-> Input-> Force Symbol" phải được đặt thành "_ DllMainCRTStartup" cho 64 bit và " _DllMainCRTStartup @ 12" cho 32 bit.

+0

cảm ơn bạn đã phản ứng nhanh chóng, dưới "hỗ trợ thời gian chạy ngôn ngữ chung" nói chung được xem như bốn lựa chọn 1.) hỗ trợ thời gian chạy ngôn ngữ chung (/ clr) 2.)/clr: tinh khiết 3.)/clr: an toàn 4.)/clr: oldsyntax để chọn một trong bốn tùy chọn này. aand dưới "Character Set" tôi cần chọn "Unicode Character set" hoặc "No Set" – krishna555

+0

"Common Language Runtime Support (/ clr)" - điều này sẽ cho phép trộn mã gốc và quản lý trong một assembly. –

+0

Bộ ký tự hầu như không liên quan –

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