Adding a C program to an existing c++ project
Hi All,
Thanks in advance for your help. I am trying to add the source code from an existing c program to my c++ project developed in Xcode. I suspect I may be over simplifying, but I was hoping I could add the source files to my project, rename the main function in the c program and call the new function from a c++ class in my existing project. The c files compile fine, but when the program tries to link I get "symbol not found". I took a look at http://www.codeguru.com/forum/showth...source+program But adding the extern "C" to the headers doesn't help. I created a simple .h and .c file to show what I am trying to do:
temptry.h looks like:
#ifndef MY_H_
#define MY_H_
#include <stdio.h>
int my_main (int, char*);
#endif
and temptry.c look like:
#include "temptry.h"
int my_main(int argc, char *argv[]) {
printf("here\n");
}
I call my_main from my c++ class which includes "temptry.h"
the function call looks like:
my_main(numArgs, clearcutParameters);
Thanks again for any and all suggestions!
Re: Adding a C program to an existing c++ project
If you wrap the header inclusion with extern "C" in your cpp files you have to make sure the C files are compiled using the C compiler and not the C++ compiler.
If you use MSVC check that the project properties - C/C++ - Advanced - Compile As is set to Default. If you use gcc/g++ it might do the same as default, if not there's absolutely some flag to force it.
You might also try to get rid of the extern "C" wrapping and compile all files as C++. Surprisingly often this works just as good.
If you still have problems post the linker errors.
Re: Adding a C program to an existing c++ project
Please use code tags when posting code.
Quote:
Originally Posted by
mothur.westcott@gmail.com
int my_main (int, char*);
and temptry.c look like:
#include "temptry.h"
int my_main(int argc, char *argv[]) {
printf("here\n");
}
The function declaration and definition don't match. In C++, these are two overloaded functions, but C doesn't know that concept.
Re: Adding a C program to an existing c++ project
Thanks for the help! Adding extern "C" and changing the char* to a char** worked.
#ifndef MY_H_
#define MY_H_
extern "C" {
#include <stdio.h>
int my_main (int, char**);
}
#endif