2009-05-19 23 views
7

Tôi nhận được lỗi trình biên dịch D8045. không thể biên dịch tập tin 'serialcommands.c' với tùy chọn/clr.D8045: không thể biên dịch tập tin C 'serialcommands.c' bằng tùy chọn/clr

Tệp này là thư viện C đã được viết để trao đổi qua cổng nối tiếp với bộ xử lý TI. Nhiệm vụ mà tôi cần làm là bọc thư viện này với một trình bao bọc CLR (sẽ có thêm các câu hỏi được gửi lên stackoverflow liên quan đến dữ liệu marshalling qua lại nếu bạn muốn một số điểm dễ dàng hơn từ các câu hỏi CLI.)

Tôi chỉ muốn sử dụng thư viện C này từ trình bao bọc CLR của tôi. Tôi đã đi đến Thuộc tính-> Thuộc tính cấu hình-> C/C++ -> Chung-> Biên dịch với hỗ trợ thời gian chạy ngôn ngữ chung = Không hỗ trợ thời gian chạy ngôn ngữ chung

Đây có phải là cách chính xác không? Tôi sẽ gặp phải những lỗi lạ khó chịu sau này hay là những thứ khác mà tôi cần phải làm để sử dụng điều này?

+0

như một sự theo dõi, tôi bây giờ là một năm ra từ việc sử dụng giải pháp này và không bao giờ có kinh nghiệm bất kỳ vấn đề như là kết quả của việc sử dụng giải pháp này. Không "sợ hãi" như tôi sợ. – MedicineMan

Trả lời

10

Có. Bạn cần phải biên dịch bất kỳ đối tượng C nào mà không có/CLR, vì clr chỉ hiểu các lớp và các đối tượng.

Bạn vẫn có thể sử dụng chúng từ dự án C++/CLI của bạn, được bao bọc bên trong các đối tượng "lớp ref" của bạn. Đây là một cách bình thường để gói một api C trong các đối tượng .NET.

+2

Lưu ý: Điều này có thể được thực hiện "cho mỗi tập tin" không chỉ cho mỗi dự án, không chắc chắn rằng đã được rõ ràng từ câu hỏi/câu trả lời ở đây vào lần đọc đầu tiên. –

+0

Điều này có thể giúp đỡ người khác trong tương lai. Tôi đã thêm một tệp .c mới vào một dự án hiện có với cả tệp C++/CLI và C và đã có lỗi này. Trong trường hợp đó có vẻ như bạn phải thay đổi cài đặt cho các tệp mới được thêm hoặc họ sẽ nhận cài đặt cho dự án. Nó đã cho tôi một chút để tìm ra lý do tại sao tôi đã nhìn thấy vấn đề này cho chỉ có một tập tin mới. Cài đặt ở dưới C++/Chung. – shawn1874

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