In a C++ MFC project, how can I use the functions in a .c file? 
it shows the following error when I add test.c and test.h file in the project: "unexpected end of file while looking for precompiled header directive"

解决方案 »

  1.   

    include stdafx.h in your .c file
      

  2.   

    you can create a new *.cpp file and *.h file ,then copy your *.c file and *.h file to the *.cpp and *.h file ,compile it 
      

  3.   

    If include stdafx.h in test.c, it shows the following error: 
    "fatal error C1853: 'Debug/test02.pch' is not a precompiled header file created with this compiler"If I set the Project Setting --> C/C++ --> Category --> Precompiled Hearders --> Not using precompiled headers, it shows the following error: 
    "c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(15) : fatal error C1189: #error :  MFC requires C++ compilation (use a .cpp suffix)" 
      

  4.   

    RESOLUTION
    This problem can be resolved in several ways depending on the situation: Resolution I
    For projects with a single C source file and multiple C++ source files (or vice-versa), use the following steps to disable precompiled headers for the single source file: 
    For the current target, open the Project Settings dialog box and select the Precompiled Headers section under the C/C++ Tab. Select the C file from the project tree in the left pane. For Visual C++ version 2.x, disable the Use .PCH File checkbox in the Per-File Use of Precompiled Headers. For Visual C++ version 4.0, select the Not using precompiled headers option button. Save the new settings and build the project. Resolution II
    For projects with multiple C and C++ source files, use the following steps to disable precompiled headers for a set of source files procedure: 
      With Visual C++ version 2.x:  1. For the current target, create a New Group by choosing New Group from
         the Project menu item.  2. Move the C source files into the new group.  3. Open the Project Settings and select the Precompiled Headers section
         under the C/C++ tab dialog.  4. Select the new group from the project tree in the left pane.  5. Disable the Use .PCH File checkbox in the Per-File Use of Precompiled
         Headers.  6. Save the new settings and build the project.  This will disable precompiled headers for a set of source files. However,
      source files in subsequent additions to this group may need the PCH usage
      disabled depending on the file's previous settings.  With Visual C++ version 4.0, groups are no longer supported. To disable
      the use of precompiled headers for a group of source files, follow the
      the steps of Resolution I, but in step 2 hold down the CRTL key while
      selecting each file.
    Resolution III
    For projects not requiring precompiled headers, follow the steps of Resolution I, but in step 2 select all targets from the project tree in the left pane. Resolution IV (VC 4.x and 5.0)Create a subproject of type "Static Library". Insert the .C files into this subproject. Delete the .C files from the top-level project. Add the resulting library or .obj files to the link line for the top-level project. This will allow you to specify a pre-compiled header for the top-level project (.CPP files), and a different pre-compiled header for the subproject (.C files).
      

  5.   

    If I copy  *.c file and *.h file to the *.cpp and *.h file, there will be a lot of other error. Since my .c is from a SDK project (and works fine in SDK), it will have many problems in .cpp.
      

  6.   

    Thanks guys. I start a new thread for other problem related with this one.