2012-01-19 30 views
19

Tôi đang sử dụng các tiêu đề được biên dịch trước trong dự án của tôi trong C nhưng chúng tôi đang tích hợp tệp .CPP vào dự án.Các tiêu đề được biên dịch sẵn với hỗn hợp C và C++

Dưới đây là các lỗi:

Error 1 fatal error C1853: 'Debug\MuffinFactory.pch' precompiled header 
file is from a previous version of the compiler, or the precompiled header is C++ 
and you are using it from C (or vice versa)  
c:\users\blake\desktop\projects\muffinfactory\source\main.cpp 1 

Chúng tôi chỉ cần một cpp đơn biên soạn trong dự án của chúng tôi, nhưng chúng tôi thực sự cần phải tiêu đề trước khi biên soạn để lưu biên dịch lần (windows.h và nhiều hơn nữa).

Tôi nên tổ chức dự án của mình để thực hiện việc này như thế nào?

+0

Bạn có thể biên dịch C của mình thành C++ không? –

+1

Đây không phải là vấn đề cuối cùng mà bạn gặp phải khi cố kết hợp như thế này. Vấn đề thông thường là cố gắng chèn một vài .C vào một dự án C++, không phải là cách khác xung quanh. –

+0

stdafx.h dành cho người mới - http://www.viva64.com/en/b/0265/ –

Trả lời

19

Vì vậy, đừng sử dụng các tiêu đề được biên dịch sẵn cho tệp đơn đó!

Là tệp .cpp, nó sẽ có tùy chọn biên dịch riêng biệt.

+0

hãy giải thích những gì bạn đã trả lời @ Persson –

+0

@nafeeur Đây là một thời gian dài trước đây, nhưng tôi tin rằng ý tưởng là C và C++ có khả năng sẽ yêu cầu các tùy chọn trình biên dịch khác nhau, vì vậy phần đầu biên dịch trước sẽ không thể sử dụng được cho cả hai bộ. trình biên dịch chấp nhận nó). Vì vậy, chỉ cần biên dịch tệp CPP đơn lẻ và không sử dụng tiêu đề được biên dịch sẵn cho nó. –

5

Bạn có thể tạo hai tiêu đề được biên dịch trước trong dự án của mình. Có một thuộc tính trên mỗi tệp nguồn xác định xem nó sẽ sử dụng một tiêu đề được biên dịch trước hay tạo một tiêu đề được biên dịch trước - hãy thử thiết lập hai nguồn khác nhau để tạo ra một tiêu đề.

+0

Tùy chọn tuyệt vời! Yêu cầu một chút không quan trọng với .vcproj mặc dù. –

+10

Thông tin bổ sung: Chọn tệp .c bạn không muốn sử dụng "Đầu trang được biên dịch trước" từ Trình khám phá giải pháp -> Nhấp chuột phải -> Trong tùy chọn tiêu đề được biên dịch trước, chọn Không sử dụng tiêu đề được biên dịch trước – Zuuum

+0

Cảm ơn Zuuum này hoạt động cho tôi khi trộn c & C++ trong VS. – Gob00st

1

Thử tạo tệp tiêu đề biên dịch C++ riêng biệt (nói MuffinFactoryCpp.h là bản sao của một tệp khác). Xem các thiết lập của dự án trong phần "Các phần đầu được biên dịch trước" và sử dụng tệp tiêu đề mới này làm phần đầu được biên dịch sẵn cho tệp nguồn C++.

0

Tôi vừa tra cứu lỗi ở đây và tìm thấy chuỗi này. Tuy nhiên, khi thử và sai, tôi thấy rằng vấn đề là tôi không có tất cả các tệp được lưu gần đây. Có vẻ như Visual Studio là một chút khó khăn về tiết kiệm ngày của các tập tin được gắn với nhau.

Tôi đã đi xung quanh nhấn Ctrl + S trên tất cả các tệp nguồn và đã khắc phục sự cố.

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